printf %s\\n "$-"
Перерахує параметри однієї літери в одній рядку.
Цей параметр також може використовуватися як:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
Спочатку вимкніть -fрозширення ilename оболонки , одночасно зберігаючи значення для $-- якщо таке є - $1. Далі жодних +fглобусів не відбувається, і розширення останнього імені знову вмикається і, можливо, також вимикається.
Наприклад, якщо -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працює для мене)