Так как вы упомянули awk
, вот один из способов.
Примечание это для пустого вывода, то есть вывести значение по умолчанию, если myCommand
вообще ничего не выводит. Если вы хотите обработать программу, которая выводит пустую строку, это что-то другое.
myCommand | awk -v def="default" '{print} END { if(NR==0) {print def} }'
{print}
пропускает каждую строку ввода. В конце (END{...}
) NR
- это количество входных записей, т. Е. Количество строк, полученных из myCommand
. Это будет 0, если вывод не был напечатан myCommand
. Если это так, выведите значение def
, присвоенное в командной строке -v def="whatever text you want"
.
Тесты:
$ awk -v def="default" '{print} END {if(NR==0) {print def}}' </dev/null
default
$ awk -v def="default" '{print} END {if(NR==0) {print def}}' <<<'foo'
foo