そこで、ホームフォルダー(より正確には、書き込みアクセス権のあるすべてのファイル)を削除しました。起こったことは、私が持っていたことです
build="build"
...
rm -rf "${build}/"*
...
<do other things with $build>
bashスクリプトで、不要になった後$build、宣言とそのすべての使用を削除しrmます。ただし、Bashは喜んでに拡張されrm -rf /*ます。うん。
私は愚かだと感じ、バックアップをインストールし、失った仕事をやり直した。恥を乗り越えようとしています。
さて、私は疑問に思う:そのような間違いが起こらないように、または少なくとも可能性が低いようにbashスクリプトを書くためのテクニックは何ですか?たとえば、私が書いていた
FileUtils.rm_rf("#{build}/*")
Rubyスクリプトでは、インタープリターはbuild宣言されていないことについて不平を言っていたので、言語が私を保護します。
rm相関関係に加えて、bashで検討したこと(関連する質問の多くの回答が言及しているように、問題ではありません):
rm -rf "./${build}/"*
それは私の現在の仕事(Gitリポジトリ)を殺したでしょうが、それ以外は何もありません。rm現在のディレクトリ外で動作する場合、そのバリアント/パラメータ化には相互作用が必要です。(見つかりませんでした。)同様の効果。
それとも、この意味で「堅牢」なbashスクリプトを作成する他の方法はありますか?
#! /usr/bin/env rubyすべてのシェルスクリプトの先頭に置き、bashを忘れてください;)
rm -rf "${build}/*引用符がどこにあるかに関係なく、理由はありません。rm -rf "${build}のために同じことをしfます。