Как проверить, вызван ли скрипт из терминала, или вывод скрипта перенаправлен в поток.
А зачем? Это логическое продолжение темы (копия) про покраску текста в терминале. Если использовать ESC-последовательности, то они, что логично, попадут в файл, если пользователь перенаправит туда вывод скрипта, и получится бяка:
Потому, надо проверить, вызвали ли скрипт из терминала, или вывод скрипта перенаправлен в поток.
По итогам обсуждения с ketmar@ljr и grusha@ljr решение нашлось:
if [ -t 1 ];then echo -e "\x1b[32;1mRun in terminal\x1b[0m" else echo "Run in pipe" fi
Вызов из терминала:
./testpipe
Run in terminal
Вызов в потоке:
./testpipe >test.txt
Содержимое файла test.txt
:
Run in pipe