LinuCレベル1 シェルおよびスクリプト 問17
シェルおよびスクリプト/シェルスクリプトシェルスクリプトscript.shのデバッグのため、各コマンドを変数などが展開された後の形で表示しながら実行し、どこで想定外の値になるかを調べたい。実行方法として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル1の出題範囲「シェルおよびスクリプト」に対応。実際の試験問題ではありません)
- Abash -x script.sh
- Bbash -n script.sh
- Cbash -v script.sh
- Dbash -e script.sh
正解:A
解説
bash -x は実行トレースを有効にし、各コマンドを変数展開やコマンド置換を済ませた後の形で、先頭に「+」を付けて標準エラー出力へ表示しながら実行します。スクリプト内で set -x と set +x を書けば、一部分だけトレースすることもできます。似たオプションの -v は、読み込んだ行を展開前のそのままの形で表示します。-n は構文チェックだけを行い、コマンドは実行しません。
選択肢ごとの解説
- A正しい。-x は展開後のコマンドを「+」付きで表示しながら実行するため、変数の実際の値を追跡できます。
- B誤り。-n はスクリプトを読み込んで構文を検査するだけで、コマンドは実行しません。
- C誤り。-v は読み込んだ行を展開前の形のまま表示するため、変数の実際の値は分かりません。
- D誤り。-e はコマンドが失敗(0以外の終了ステータス)した時点でスクリプトを終了させるオプションです。