printf %s\\n "$-"
単一文字列の単一文字オプションをリストします。
このパラメーターは次のようにも使用できます。
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
最初の無効シェルに-f
同時に値保存中ilename拡張$-
があれば- -でを$1
。次に、グロブは発生せず、最後の+f
ファイル名展開が再び有効になり、場合によっては無効にもなります。
たとえば-f
、の値$-
が最初に保存されたときにファイル名の展開がすでに無効になっている場合、その保存された値は(少なくとも)になります。
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
ので、任意の継承されません-秒trap
秒が、その親が明示的に無視していたもの- (ようtrap '' INT
)。
しかしながら:
trap 'echo this is my trap' 0
save_traps=$(trap)
trap
コマンド置換サブシェルで実行される最初で唯一のコマンドである場合traps
、シェルへの安全な再入力のために引用符で囲まれた形式で現在設定されている親シェルのリストを再現するという特別な動作をします。そして、あなたは行うことができsave_traps
、その後、 set
引数なし-すでに述べた残りのすべて-ほとんどすべてのシェル状態のロックを取得します。ただし、元のシェルvar属性を明示的に追加export -p
およびreadonly -p
復元したい場合があります。
とにかく、それで十分です。
set +o
との 両方を使用する必要がありshopt
ますか?(shopt
言葉になることができるようsettable
に、manページで使用されているのでshoptable
、私のために働く)