printf %s\\n "$-"
Перечислите варианты одной буквы в одной строке.
Этот параметр также может быть использован как:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
Сначала отключить -fрасширение оболочки ilename, одновременно сохраняя значение $-- если оно есть - в $1. Далее, глобусы не возникают, и последнее +fрасширение ilename снова включается и, возможно, также отключается.
Например, если -fрасширение ilename уже было отключено при $-первом сохранении значения для , то его сохраненное значение будет (как минимум) :
f
И поэтому, когда setзапускается снова, это работает для:
set +f -f
Что просто возвращает вас туда, откуда вы начали.
set +o
Перечислим все setварианты таблицы оболочки (см ответа Джейсона за shoptвозможность - это то , что слово - варианты) в форме , которая является безопасной для спускаемога оболочки. Таким образом, вы также можете сделать:
state=$(set +o)
set -some -crazy -options
eval "$state"
Для сохранения, изменения и восстановления состояния параметров оболочки соответственно.
Чтобы обработать shoptионы и setпараметры таблицы за один раз:
state=$(set +o;shopt)
#do what you want with options here
eval "$state"
Вы также можете позвонить set без каких-либо аргументов, чтобы добавить список всех установленных на данный момент переменных оболочки - также указанных для повторного входа в оболочку. И вы можете - в bash - дополнительно добавить команду, typeset -fpчтобы также включить все объявленные в настоящее время функции оболочки. Вы можете смешать все это вместе и evalкогда будете готовы. Вы можете даже позвонить aliasбез аргументов для более того же. Это ... может покрыть это, хотя. Я предполагаю, что есть "$@"- что вы должны были бы поместить в bashмассив сначала, я полагаю, перед тем, как делать set.
Нет, есть также trap. Это немного смешно. Обычно:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
... просто напечатает это - моя подполочка, потому что подоболочка - это новый процесс, который получает свой собственный набор traps - и поэтому не наследует никаких traps, кроме тех, которые его родительский элемент явно проигнорировал - (например trap '' INT) .
Тем не мение:
trap 'echo this is my trap' 0
save_traps=$(trap)
trapведет себя особенно, когда это первая и единственная команда, запускаемая в подоболочке подстановки команд, поскольку она воспроизводит список установленных trapsв данный момент родительских оболочек в формате, указанном для безопасного повторного входа в оболочку. И так что вы можете сделать save_traps, то set без аргументов - и все остальное уже было сказано - в значительной степени получить блокировку на все состояния оболочки. Возможно, вы захотите явно добавить export -pи readonly -pвосстановить оригинальные атрибуты оболочки var.
Во всяком случае, этого достаточно.
set +oиshopt? (что касаетсяshoptтого, чтобы быть словом,settableиспользуется на странице руководства, так чтоshoptableработает для меня)