「bash +x script.sh」の「+x」オプションとはどういう意味ですか?

「bash +x script.sh」の「+x」オプションとはどういう意味ですか?

私はそれが何をしてbash -xいるのか知っていますが、それは何をしますかbash +x

Google 検索では結果が出ておらず、ドキュメントにはこれに関する言及はありません。

ベストアンサー1

-x、それは同じ-o xtrace 作るオプションxtrace

+x、それは同じ+o xtrace 障害を負うそれ。

これらのオプションをインタプリタに渡して起動時に有効/無効にするか(set/// set -o xtrace)に渡して、set -x実行時に有効/無効にすることができます。set +o xtraceset +x

ただし、オプションに関しては、オプションxtraceは次のとおりです。いいえ$SHELLOPTSデフォルトでは有効になっており、bashはenv変数またはパスが格納されている初期化ファイルの前にコマンドラインオプションを処理するため、$BASH_ENVこのbashオプションを+x呼び出すことは意味がありません。

$ cat env
set -o xtrace
$ BASH_ENV=env bash +x -c 'echo foo'
+ echo foo
foo
$ env SHELLOPTS=xtrace bash +x -c 'echo foo'
+ echo foo
foo

どちらの場合も、設定を通過またはキャンセルする+x方法はありません。set -o xtrace$BASH_ENV$SHELLOPTS

-xor以降にのみ機能します-o xtrace

$ bash -x +x -c 'echo foo'
foo

したがって(可能性なし)がある場合、bash +x ./script.sh1は意味があるかもしれません。alias bash='bash -x'

しかし、次のようにすることができます。

$ bash +B -c 'echo {a,b}'
{a,b}

braceexpandこのオプションを無効にするにははいデフォルトでは有効になっています。

またはこれを行うこともできます:

$ env SHELLOPTS=xtrace bash -c 'set +x; echo foo'
+ set +x
foo

障害を負うxtrace 後ろに処理中に有効になります$SHELLOPTS


1現在のディレクトリに見つからない場合は、検索を./防ぐ必要があります。bashscript.sh$PATH

おすすめ記事