指摘・レビュー4 択難易度 応用

デプロイスクリプトの 1 行。指摘として正しいものは?

rm -rf $BUILD_DIR/

正答

  1. -rf は -fr の順で書かないと再帰削除にならないので、順序を入れ替える
  2. 末尾に / があるので、ディレクトリ自体は残り中身だけが消えて安全である
  3. BUILD_DIR が空だと rm -rf / になる。"${BUILD_DIR:?}" で止める
  4. シェルは大文字の変数名を展開しないので、小文字の build_dir に変えないと何も消えない

解説

BUILD_DIR が未設定や空のとき、$BUILD_DIR/ は / に展開され、ルート以下の削除を試みる。"${BUILD_DIR:?}" と書くと、空や未定義ならエラーで止まり rm は実行されない。あわせてダブルクォートで囲むと、空白を含むパスで分割されるのも防げる。オプションの順序は -rf でも -fr でも同じなので 1 番目は誤り。

参考: www.gnu.org

bashrmvariable

この問題を含む 指摘・レビュー のテストを制限時間つきで解く

指摘・レビュークイズへ