私はいくつかのスクリプトを書いていて、次のようなものを書きました
ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
何が起こったのかというと、私は愚かさのために最初の行を実行せずに2行目を実行したということです。[-d ""]がtrueを返し、式が
rm -rf /*
幸い、それは単なるテストマシンであり、sudoではありませんでしたが、一部のデータを失いましたが
私の質問は、なぜ[-d ""]がtrueを返すのですか?ドキュメントには、パスが存在し、フォルダであるかどうかをチェックすることが明確に記載されています
私は使用して問題を解決しました
[ -e $ARTIFACTS ]
うまくいくようです
乾杯
rm -rf $ARTIFACTSなしでそれを書くだけ/*です。これにより、$ARTIFACTSディレクトリも削除されます。これは問題ありませmkdir -p $ARTIFACTSん。何かを配置する前にディレクトリが存在することを確認したい場合は、とにかく実行します。また、内部に隠されたファイルを削除します$ARTIFACTS私は書きませんので、細かいもある、rm -rf $ARTIFACTS/*あれば$ARTIFACTS含まれている何でも、私は保存したかったし。