Linux + xzcat команда

[ и test синонимы (кроме [ требует ]), таким образом, Вы не хотите использовать [ test:

[ -x /bin/cat ] && echo 'cat is executable'
test -x /bin/cat && echo 'cat is executable'

test возвращает нулевой статус выхода, если условие является верным, в других отношениях ненулевым. Это может на самом деле быть заменено любой программой для проверки ее статуса выхода, где 0 указывает, что успех и ненулевой указывает на отказ:

# echoes "command succeeded" because echo rarely fails
if /bin/echo hi; then echo 'command succeeded'; else echo 'command failed'; fi

# echoes "command failed" because rmdir requires an argument
if /bin/rmdir; then echo 'command succeeded'; else echo 'command failed'; fi

Однако все вышеупомянутые примеры только тестируют против статуса выхода программы и игнорируют вывод программы.

Для find, необходимо будет протестировать, если вывод был сгенерирован. -n тесты для непустой строки:

if [[ -n $(find /var/log/crashes -name "app-*.log" -mmin -5) ]]
then
    service myapp restart
fi

Полный список тестовых аргументов доступен путем вызова help test в bash командная строка.

Если Вы используете bash (и нет sh), можно использовать [[ condition ]], который ведет себя больше очевидно, когда существуют пробелы или другие особые случаи в Вашем условии. Иначе это обычно - то же как использование [ condition ]. Я использовал [[ condition ]] в этом примере, как я делаю, когда это возможно.

Я также изменился `command` кому: $(command), который также обычно ведет себя точно так же, но более любезен с вложенными командами.

0
18.09.2013, 00:45
1 ответ

xzcat обычно часть xz пакет. Установите тот пакет с помощью инструмента управления пакета дистрибутива Linux (Вы не упомянули, какой дистрибутив Linux Вы используете - как Debian, Redhat и т.д.).

1
28.01.2020, 02:53

Теги

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