![bash のトレース/詳細モードを一時的に変更するにはどうすればいいですか?](https://rvso.com/image/164708/bash%20%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%2F%E8%A9%B3%E7%B4%B0%E3%83%A2%E3%83%BC%E3%83%89%E3%82%92%E4%B8%80%E6%99%82%E7%9A%84%E3%81%AB%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
-x
bash スクリプトの実行をトレースするために使用します:
#!/bin/bash -x
x=1
y=2
実行中に出力に送信する
+ x=1
+ y=2
質問: スクリプトの途中でトレース モードを停止/一時停止し、再度有効にするにはどうすればよいでしょうか? これは y=2 >/dev/null のようなものではないことに注意してください。
詳細モード(#!/bin/bash -v
)でも可能でしょうか?
答え1
のset
組み込みこれらのオプションを制御します。
スイッチをつけるxtrace
:
set -x
オフにするには:
set +x
それはプラスとマイナスの逆の論理ですが、それが現実です。
同様に、 でサポートされている他のすべてのオプションもset
コマンド ライン(*)で設定できるため、などbash -u
と同じですset -u
。リンクされた説明にそれらのリストがあり、help set
コマンド ラインにも表示されます。
一部のオプションには長い形式もあります。たとえば、 はset -o xtrace
と同じですset -x
。
(* ただし、その逆は言えません。 すべてのコマンドライン オプションが で設定できるわけではありません。set
たとえば、 に-l
は同等のものはなく、 にも同等のものはありません-c
。)