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

Оглавление
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

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

bbrodriges 25.12.08 в 14:54

0

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

bbrodriges 25.12.08 в 14:56

0

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

bbrodriges 25.12.08 в 14:56

0

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

bbrodriges 25.12.08 в 14:59

0

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

bbrodriges 25.12.08 в 15:02

0

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

bbrodriges 25.12.08 в 15:02

0

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

bbrodriges 25.12.08 в 15:04

0
Минутку...