そこで、ホームフォルダー(より正確には、書き込みアクセス権のあるすべてのファイル)を削除しました。起こったことは、私が持っていたことです
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
ます。