Укажите значение по умолчанию, если команда возвращается с ненулевым кодом выхода

С помощью команды unix вы можете использовать следующую sed

sed -e 's/\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\).*\[\(.*\)\].*/\1\t\3/' test.log

Но если файл журнала очень большой, я думаю, было бы лучше использовать Python, поскольку он может более эффективно обрабатывать действия с большими файлами, например, библиотека fileinput или генератор.

5
12.02.2016, 18:59
4 ответа

Ваша конструкция в порядке. Вы даже можете сделать что-то вроде

cat config || cat defaultconfig

. Если вы используете какую-то случайную команду (например, ./ get_config_from_web в комментариях), вам нужно убедиться, что команда действительно дает разумный статус возврата. Это может быть сложно, сценарии оболочки просто возвращают результат последней выполненной команды, вам нужно будет выполнить exit , если вы хотите получить что-то еще в качестве результата.

2
27.01.2020, 20:40

Вы можете использовать код выхода в операторе if:

#!/bin/bash
cat config
if [[ "$?" -ne "0" ]]; then
    echo "VALUE"
fi

Если предыдущая команда завершилась успешно, она завершится со значением «0». Таким образом, вы говорите ему, что при любом другом выходе (сбое) он будет выводить все, что находится в "VALUE".

0
27.01.2020, 20:40
if [ -a config ]; then cat config; else echo ${DEFAULT};fi

при условии, что переменная DEFAULT заранее установлена на что-то.

0
27.01.2020, 20:40

При любом не пойманном состоянии ошибки будет выдаваться эхо 42:

trap "echo 42" ERR

Вы можете сделать это настраиваемой переменной:

trap 'echo "${CONFIG:=42}"' ERR  # if $CONFIG is not set, it will be defaulted to 42
2
27.01.2020, 20:40

Теги

Похожие вопросы