Как проверить, вызван ли скрипт из терминала, или вывод скрипта перенаправлен в поток.
Как проверить, вызван ли скрипт из терминала, или вывод скрипта перенаправлен в поток.
А зачем? Это логическое продолжение темы (копия) про покраску текста в терминале. Если использовать ESC-последовательности, то они, что логично, попадут в файл, если пользователь перенаправит туда вывод скрипта, и получится бяка:
Потому, надо проверить, вызвали ли скрипт из терминала, или вывод скрипта перенаправлен в поток.
По итогам обсуждения с ketmar и grusha решение нашлось:
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
на GitHub
Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2022/10/04/kak-p