Обычно я просто использую подстановку команд , а затем проверяю ее, например.
if [ ! -z "$(command1 | command 2 | awk '$1 > 800')" ]; then command3; fi
command1 | command 2 | awk '$1 > 800'
[ ! -z "$(…)" ]
, которая будет истинной, если это не !
строка нулевой длины -z
. Следовательно, если есть вывод в командный канал, команды then
будут выполняться.
Выполните завершение сценария awk
с правильным кодом возврата для вашего оператора if
:
if command1 | command2 | awk '$1 > 800 { c++; print } END { exit (c == 0) }'
then
command3
fi
Или, если вам на самом деле не нужен вывод программы awk
:
if command1 | command2 | awk '$1 > 800 { c++; exit } END { exit (c == 0) }'
then
command3
fi
Вы можете позволить awk
напечатать желаемый код выхода, например:
echo 900 | awk '{ print !($1 > 800) }'
Затем это можно обернуть в подоболочку, используя (
и exit
, для возврата значения изawk
:
echo 900 | (exit $(awk '{ print !($1 > 800) }'))
Который затем можно использовать как часть конвейера:
echo 900 | (exit $(awk '{ print !($1 > 800) }')) && echo yes || echo no