if test -o verbose; then
echo 'shell is running in verbose mode'
else
echo 'shell is not running in verbose mode'
fi
или, что эквивалентно,
if [[ -o verbose ]]; then
echo 'shell is running in verbose mode'
else
echo 'shell is not running in verbose mode'
fi
Встроенная утилита test
в bash
способна проверить, установлена опция оболочки или нет, используя -o OPTION
.Смотрите help test
в интерактивной оболочке bash
или читайте о ней в руководстве bash
.
Ваша функция может выглядеть как
foo () {
if [[ -o verbose ]]; then
set +v
trap 'set -v' RETURN
fi
# do stuff
}
Это определяет, является ли -v
активен при вызове функции.Если это так, он отключается и устанавливается ловушка RETURN
, которая снова включит его, когда функция вернется (в конце функции или с помощью явного оператора return
).