1.06.2基礎
script.shを実行しながら、Bashが読み込んだシェル入力行を表示する。
展開後のコマンド追跡ではなくverbose入力表示を使う。
適切なコマンドはどれか。
× 不正解
bash -vはシェル入力行を読み込む際に表示するverboseモードである。-xは展開後の実行追跡で、表示内容が異なる。
詳細解説
誤り
bash -n script.sh構文を読み取るがコマンドを実行しない。
-nはスクリプトを読み構文エラーを検査するnoexecモードである。入力行を表示しながら通常実行する要件とは異なる。
誤り
bash -c script.shscript.shという文字列をコマンドとして解釈し、ファイルのverbose表示ではない。
-cは後続のscript.shという文字列自体をコマンド名として解釈する。ファイルをverboseモードで読む指定ではない。
正しい
bash -v script.sh読み込んだ入力行を表示しながらスクリプトを実行する。
-vはBashが入力行を読み込む際にその行を表示し、続けて通常どおり実行する。元の記述を追いたい要件に一致する。
誤り
bash -x script.sh展開後、実行直前のコマンドを追跡表示する。
-xはパラメータ展開などを行った後の実行コマンドを表示する。入力行そのものを見る-vとは表示段階が異なる。
実際に確かめる
一時的な検証環境で実行できる例です。
bash -c 'f=$(mktemp); printf "name=blue\nprintf \"%%s\\n\" \"$name\"\n" >"$f"; bash -v "$f" 2>&1; rm -f "$f"'期待される結果
入力行name=blueとprintf行、および実行結果理解のポイント
- -vは入力行
- 標準エラーへ表示
- -xは展開後追跡
確認時の注意
- 確認環境: GNU Bash 5.2 / 一時ファイル
- 診断は標準エラーへ出るため、標準出力だけをパイプした場合は別経路になる。
基礎のおさらい
verbose
-vは読み込んだ入力を表示するため、元のスクリプトのどの行を処理中か確認しやすい。
組み合わせ
必要に応じてbash -vx script.shのように入力行と展開後追跡の両方を有効にできる。
問題IDKL-102-939
確認環境GNU Bash 5.2 / 一時ファイル
最終技術確認2026-08-13
誤り・権利侵害を報告