printf %s\\n "$-"
Enumerará las opciones de letra única en una sola cadena.
Ese parámetro también se puede usar como:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
Para deshabilitar -fprimero la expansión de nombre de archivo de shell al mismo tiempo que guarda un valor para $-, si lo hay, en $1. A continuación, no se producen globs, y la última +fexpansión de ilename vuelve a estar habilitada y posiblemente también deshabilitada.
Por ejemplo, si la -fexpansión de nombre de archivo ya estaba deshabilitada cuando $-se guardó por primera vez el valor , entonces su valor guardado sería (al menos) :
f
Y así, cuando setse ejecuta de nuevo, funciona para:
set +f -f
Lo que simplemente te devuelve a donde empezaste.
set +o
Enumerará todas setlas opciones de shell de la tabla (consulte la respuesta de Jason para las shoptopciones de ¿es una palabra?) En una forma segura para el reingreso de shell. De esa manera, también puedes hacer:
state=$(set +o)
set -some -crazy -options
eval "$state"
Para guardar, cambiar y restaurar el estado de las opciones de shell respectivamente.
Para manejar shoptiones y setopciones de tabla de una vez:
state=$(set +o;shopt)
#do what you want with options here
eval "$state"
También puede llamar set sin ningún argumento para agregar una lista de todas las variables establecidas actualmente en el shell, también citadas para volver a ingresar al shell. Y puede, en bash, agregar adicionalmente el comando typeset -fppara incluir también todas las funciones de shell declaradas actualmente. Puede agruparlo todo junto y evalcuando esté listo. Incluso puede llamar aliassin argumentos para más de lo mismo. Eso ... podría cubrirlo, sin embargo. Supongo que sí "$@", lo cual tendrías que poner bashprimero en una matriz, supongo, antes de hacerlo set.
No, también hay trap. Este es un poco divertido. Generalmente:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
... solo imprimirá esta es mi subshell porque la subshell es un proceso nuevo y obtiene su propio conjunto de traps, por lo que no hereda ninguna traps sino aquellas que su padre ha ignorado explícitamente (como trap '' INT) .
Sin embargo:
trap 'echo this is my trap' 0
save_traps=$(trap)
trapse comporta especialmente cuando es el primer y único comando ejecutado en un subshell de sustitución de comandos en el sentido de que reproducirá una lista del shell primario actualmente configurado trapsen un formato que se cita para un reingreso seguro al shell. Y para que pueda hacer eso save_traps, luego set sin argumentos, y todo el resto ya mencionado, para obtener un bloqueo en todo el estado de shell. Sin embargo, es posible que desee agregar explícitamente export -py readonly -prestaurar los atributos var de shell originales.
De todos modos, eso es suficiente.
set +oyshopt? (en cuanto ashoptser una palabra,settablese usa en la página de manual, así queshoptablefunciona para mí)