$PROJECT_HOME/*
時にはプロジェクト内のすべてのファイルを使用して削除します。PROJECT_HOME
環境変数が設定されていない場合(私が設定し、su
新しいユーザーがこの環境変数を設定していないため)、ルートフォルダからすべてのファイルが削除され始めます。これが世界の終わりです。
bash
シェルで定義されていない環境変数を使用するときに発生するエラーをどのように設定しますか?
答え1
答え2
[ -z "$PROJECT_HOME" ] || rm -r "$PROJECT_HOME"/*
これは次のような場合も捉えます。PROJECT_HOME
はい設定はできましたが内容はありません。
例:
1)これにより、システムから削除できるほとんどすべての項目が削除されます(内部のドットファイルは除外されます(/
通常は存在しません))。
set -u
PROJECT_HOME=
rm -r "$PROJECT_HOME"/*
2) これは何もしません:
PROJECT_HOME=
[ -z "$PROJECT_HOME" ] || rm -r "$PROJECT_HOME"/*
プロジェクトのホームディレクトリを完全に削除して再作成することも別のオプションです(ドットファイルも削除したい場合)。
#no apocalyptic threats in this scenario
rm -r "$PROJECT_HOME"
mkdir "$_"
答え3
これを行う別の方法:
rm -r "${somevar:-/tmp/or_this_if_somevar_is_empty}"/*
変数置換がたくさんあります。上記の置換は、「somevar」が空の場合です(この場合は削除を試みます/tmp/or_this_if_somevar_is_empty/*
)。