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)
... просто надрукує, що це моя доподібна оболонка, тому що підпрограшка є новим процесом і отримує власний набір trap
s - і тому не успадковує жодних trap
s, окрім тих, які його батьків явно ігнорував - (як 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
працює для мене)