У меня есть bash script, что я хочу быть спокойным, когда вы запускаете без привязки tty (например, cron). Теперь я искал способ условно перенаправить вывод в /dev/null в одной строке. Это пример того, что я имел в виду, но у меня будет еще много команд, которые выводят в script
#!/bin/bash
# conditional-redirect.sh
if tty -s; then
REDIRECT=
else
REDIRECT=">& /dev/null"
fi
echo "is this visible?" $REDIRECT
К сожалению, это не работает:
$ ./conditional-redirect.sh
is this visible?
$ echo "" | ./conditional-redirect.sh
is this visible? >& /dev/null
то, что я не хочу делать, - это дублировать все команды в варианте с перенаправлением или без-перенаправления:
if tty -s; then
echo "is this visible?"
else
echo "is this visible?" >& /dev/null
fi
EDIT:
Было бы здорово, если бы решение предоставило мне способ вывода чего-либо в "тихом" режиме, например. когда что-то действительно не так, я мог бы получить уведомление от cron.