Просто используйте команду read
с таймаутом, чтобы увидеть, возвращает ли он что-то и вернуть вывод по умолчанию в тех случаях, когда он пуст.Это зависит от кода завершения, возвращаемого командой read
при невозможности чтения из входного потока.
.. | { read -r -t1 val || echo 'something' ; }
Например, при попытке найти иголку в стоге сена
echo haystack | grep needle | { read -r -t1 val && echo "$val" || echo 'something' ; }
Общий шаблон для этого варианта использования, использующий условие if, будет выглядеть примерно так, как показано ниже, и более подробно написано:
if read -r -t1 val < <(echo haystack | grep needle); then
printf '%s\n' "$val"
else
printf '%s\n' "something"
fi
Вы можете заменить деталь echo haystack | grep needle
командой, с которой вы работаете.