現在のbashセッションでextglobが有効になっているかどうかはどうすればわかりますか?

現在のbashセッションでextglobが有効になっているかどうかはどうすればわかりますか?

bash端末を開けました。 extglob オプションの値を変更する前に、このセッションでそのオプションが有効か無効かを確認したいと思います。どうすればいいですか?

答え1

速く走る:

$ shopt extglob

現在の状態が返されます。

$ shopt extglob 
extglob         on
$ shopt -u extglob 
$ shopt extglob 
extglob         off

すべてのオプションを表示するには:

$ shopt

答え2

使用ショッピング-Q:

shopt -q extglob && echo enable || echo disable

-qオプションは出力を削除しshopt、オプションが設定されているかどうかを示すステータスを返します。

shopt変数に表示されるオプションのみが報告され、これらのオプションは組み込みBASHOPTSコマンドには影響しません。set

setで有効またはに表示される可能性のあるオプションを確認するには、SHELLOPTS以下を使用しますshopt -qo

$ bash --posix -c 'shopt -qo posix && echo enable || echo disable'
enable

答え3

Bashには2つのオプションのリストがあります。に一つshopt、に一つset

このオプションはリストextglobに属します。その値はまたはshoptを使用して印刷できます。
shopt extglobshopt -p extglob

このオプションはそのリストnounsetに属します。setその値はまたは
を使用して印刷できます。shopt -op nounsetshopt -o nounset

オプションを確認してください。

shoptの特定のオプションを変更せずに印刷するには、次のようにしますshopt -p name

$ shopt -p xpg_echo
shopt -u xpg_echo

の場合は、以下setを使用してください。 (はい、リストをshopt -po name使用できます。)shopt -opset

$  shopt -po xtrace
set +o xtrace

オプションを一覧表示します。

shoptのすべてのオプションを一覧表示するには、使用shopt(または再利用shopt -p)してください。
shopt -s可能shopt -u

すべてのオプションをリストする方法は、(関連:)setを使用することです。または:等しいと等しい。set -oset +o
shopt -oset -oshopt -opset +o

手動

からLESS=+/'^ *shopt \[' man bash

オプションがない場合、または-pオプションを使用すると、設定可能なすべてのオプションのリストが表示されます。 optname引数なしで-sまたは-uを使用すると、表示はそれぞれ設定または設定解除されたオプションに制限されます。

から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

答え4

回答に追加上記setロゴの場合

現在のフラグセットは$-にあります。

(ソース:bashヘルプ)

if [[ ${-%x*} != $- ]] ; then echo "Debug (xtrace) is on"; fi

関連情報