bashスクリプトでコマンドの逐次表示
[質問]
bashでスクリプトを実行しつつ、実行しているコマンドを表示できますか。Windowsのバッチで"@echo on"のような機能です。
[回答] Gemini
はい、可能です!bashでもWindowsのバッチファイル(.bat)の @echo on と同じように、実行されるコマンドを逐一ターミナルに表示する機能があります。
主に2つの方法があります。
1. スクリプト内で設定する(おすすめ)
スクリプトの冒頭に set -x と記述します。これがWindowsの @echo on に相当します。
- 解除する場合:
set +xと書くと、それ以降のコマンド表示がオフになります(@echo off相当)。 - 特徴: スクリプトの特定の区間だけを表示させたいときにも便利です。
2. 実行時にオプションを指定する
スクリプト自体を書き換えずに、実行コマンドに -x を付け加える方法です。
表示のカスタマイズ(Tips)
bashでこの機能(デバッグモード)を使うと、通常はコマンドの先頭に + 記号が表示されます。これによって「スクリプトの出力」と「実行されたコマンド」を見分けることができます。
もしこの + を変更したい場合は、環境変数 $PS4 を変更します。
このように設定すると、実行された時刻なども一緒に表示できるようになります。
実行結果が意図通りか確認するために、まずは簡単なスクリプトで set -x を試してみますか?