Как проверить, вызван ли скрипт из терминала, или вывод скрипта перенаправлен в поток.
Преамбула
А зачем? Это
логическое продолжение темы (
копия) про покраску текста в терминале. Если использовать 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-proverit-vyzvan-li-skript-iz-terminala-ili-vyvod-skripta-perenapravlen-v-potok/(
Comments |
Comment on this)