Готовый перевод bash Cookbook / bash: Сборник рецептов: 1.8 Determining If You Are Running Interactively / Определяем, что вы работаете в интерактивном режиме

Проблема
У вас есть код, который должен запускаться только если вы находитесь в интерактивном режиме (или наоборот).

Решение
Используйте оператор case:

#!/usr/bin/env bash
# cookbook filename: interactive
case "$-" in
*i*) # Код для интерактивного режима
;;
*) # Код для неинтерактивного режима
;;
esac

Обсуждение
$- - строка, содержащая в себе все флаги оболочки. Она будет содержать значение i, если оболочка работает в интерактивном режиме.

Вы также можете использовать следующий код (он будет работать, но решение данное выше предпочтительнее):

if [ "$PS1" ]; then
echo This shell is interactive
else
echo This shell is not interactive
fi

Смотрите также
• help case
• help set
• Рецепт 6.14, “Используем многие способы”, для детального описание оператора case

Переведено на Нотабеноиде
http://notabenoid.org/book/750/3525

Переводчики: bbrodriges

Настройки

Готово:

100.00% КП = 1.0