При написании скриптов bash иногда возникает ситуация, когда необходимо изменить поведение скрипта в зависимости от того откуда скрипт был запущен. Из терминала или из задачи в cron.
Для определения откуда был запущен скрипт можно использовать следующую конструкцию:
1 | if [ -t 1 ] ; then echo "terminal"; else echo "cron"; fi |
В зависимости от метода запуска уже меняем поведение скрипта, к примеру менять вывод сообщения:
1 2 3 4 5 6 7 8 | if [ -t 1 ] ; then echo "Terminal mode"; else echo "Run in cron"; exec 6>&1 exec >> $LOGFILE fi |