回答:
shopt -qを使用します。
shopt -q extglob && echo enable || echo disable
-q
optionはshopt
出力を破棄し、オプションが設定または設定解除されたことを示すステータスを返します。
変数にshopt
表示できるオプションのみを報告することに注意してくださいBASHOPTS
。これらのオプションはset
組み込みコマンドでは無効です。
有効なオプションをチェックするためにset
、またはで表示されることができSHELLOPTS
、使用shopt -qo
:
$ bash --posix -c 'shopt -qo posix && echo enable || echo disable'
enable
shopt extglob
ですか?
shopt extglob
とあなたのアプローチはstdoutに書き込みます。考えてるshopt -q extglob && shopt -u extglob || shopt -s extglob
?
shopt -q extglob && : Code when enable || : Code when disable
です。
bashには2つのオプションリストがあります。1 shopt
つと1つset
。
オプションextglob
はshopt
リストに属しています。
その値は、shopt extglob
またはを使用して出力できますshopt -p extglob
。
のようなオプションnounset
はset
リストに属しています。
その値は、shopt -op nounset
またはを使用して出力できshopt -o nounset
ます。
shoptの特定のオプションを(変更せずに)印刷するには、次を使用しますshopt -p name
。
$ shopt -p xpg_echo
shopt -u xpg_echo
そしてのためset
、使用しますshopt -po name
(そう、あなたが使用することshopt -op
のためにset
リスト)。
$ shopt -po xtrace
set +o xtrace
shoptからすべてのオプションをリストするには、shopt
(またはreusable shopt -p
)を使用します。
また、shopt -s
またはshopt -u
使用することができます。
にすべてのオプションをリストする方法set
はset -o
(関連:)ですset +o
。
または:shopt -o
と同等ですset -o
とshopt -op
していますset +o
。
からLESS=+/'^ *shopt \[' man bash
:
オプションを指定しない場合、または-pオプションを指定した場合は、設定可能なすべてのオプションのリストが表示されます。-sまたは-uをoptname引数なしで使用すると、表示はそれぞれ設定または設定解除されたオプションに制限されます。
からLESS=+/'^ *set \[' man bash
:
オプション名なしで-oを指定すると、現在のオプションの値が出力されます。オプション名なしで+ oを指定すると、現在のオプション設定を再作成する一連のsetコマンドが標準出力に表示されます。
$ set -o
allexport off
braceexpand on
emacs on
errexit off
errtrace off
functrace off
hashall on
histexpand on
history on
ignoreeof off
interactive-comments on
keyword off
monitor on
noclobber off
noexec off
noglob off
nolog off
notify off
nounset off
onecmd off
physical off
pipefail off
posix off
privileged off
verbose off
vi off
xtrace off
そして
$ shopt -sp
shopt -s checkwinsize
shopt -s cmdhist
shopt -s expand_aliases
shopt -s extglob
shopt -s extquote
shopt -s force_fignore
shopt -s histappend
shopt -s histverify
shopt -s interactive_comments
shopt -s progcomp
shopt -s promptvars
shopt -s sourcepath
shopt -op
実際にどれがset
オプションをリストするかについて言及する価値があります:
$ shopt -op
set +o allexport
set -o braceexpand
set -o emacs
set +o errexit
set +o errtrace
set +o functrace
set -o hashall
set -o histexpand
set -o history
set +o ignoreeof
set -o interactive-comments
set +o keyword
set -o monitor
set +o noclobber
set +o noexec
set +o noglob
set +o nolog
set +o notify
set +o nounset
set +o onecmd
set +o physical
set +o pipefail
set +o posix
set +o privileged
set +o verbose
set +o vi
set +o xtrace
shopt -s extglob
か、オフにしたい場合はを実行しshopt -u extglob
ます。元々あったかどうかは関係ありません。