Как проверить, вызван ли скрипт из терминала, или вывод скрипта перенаправлен в поток.

Oct 04, 2022 03:57

Как проверить, вызван ли скрипт из терминала, или вывод скрипта перенаправлен в поток.

Преамбула

А зачем? Это логическое продолжение темы (копия) про покраску текста в терминале. Если использовать 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)

it, linux

Previous post Next post
Up