過去問ドリル

LinuCレベル1 シェルおよびスクリプト 問17

シェルおよびスクリプト/シェルスクリプト

シェルスクリプトscript.shのデバッグのため、各コマンドを変数などが展開された後の形で表示しながら実行し、どこで想定外の値になるかを調べたい。実行方法として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル1の出題範囲「シェルおよびスクリプト」に対応。実際の試験問題ではありません)

正解:A

解説

bash -x は実行トレースを有効にし、各コマンドを変数展開やコマンド置換を済ませた後の形で、先頭に「+」を付けて標準エラー出力へ表示しながら実行します。スクリプト内で set -x と set +x を書けば、一部分だけトレースすることもできます。似たオプションの -v は、読み込んだ行を展開前のそのままの形で表示します。-n は構文チェックだけを行い、コマンドは実行しません。

選択肢ごとの解説

  • A正しい。-x は展開後のコマンドを「+」付きで表示しながら実行するため、変数の実際の値を追跡できます。
  • B誤り。-n はスクリプトを読み込んで構文を検査するだけで、コマンドは実行しません。
  • C誤り。-v は読み込んだ行を展開前の形のまま表示するため、変数の実際の値は分かりません。
  • D誤り。-e はコマンドが失敗(0以外の終了ステータス)した時点でスクリプトを終了させるオプションです。
LinuCレベル1の問題を演習モードで解く