Готовый перевод 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
Настройки
Готово:
