
Я хочу проверить, какие опции включены для моей текущей оболочки. Например, я хочу узнать, был ли я вызван с -x
или -e
или любым количеством других опций.
Я source
скрипт оболочки со строкой shebang #!/bin/bash -x
и позже пытаюсь отключить 'x' с помощью a set +x
в конце скрипта. Теперь я хочу проверить, set +x
удалась ли моя строка.
Попытка решения
Я обнаружил printenv
и set
как способы проверки некоторой информации о текущей оболочке, но ни один из них, похоже, не содержит переменной, которая хранит x
e
или что-то в этом роде.
решение1
Это в $-
переменной.
Смотритедокументация для set
команды-- прокрутите страницу вниз до конца, и вы увидите «Текущий набор параметров можно найти в $-
».
Краткая демонстрация
$ bash
$ echo $-
himBH
$ set -f; set +H
$ echo $-
fhimB
$ [[ $- == *i* ]] && echo This is an interactive shell
This is an interactive shell
решение2
Также есть $BASHOPTS
и $SHELLOPTS
.