私はBashの知識が不足しているので、私は些細な問題であなたに来ます。私は41のフォルダの「Apps」ディレクトリを持っています。各フォルダには、glue1.cssファイルを含むサブディレクトリcss
があります。私の目標は、bashのループを介してそのCSSファイルを削除することですが、私は2つのフォルダ:ad
とglue-resources
を免除する必要があります。複数の条件を持つBash if文
cssファイルがないので、ad
フォルダーを免除する必要があります。私は、実行時に発生してから、次のエラーを回避したい:
rm: ad/css/glue1.css: No such file or directory
は、この仮想ディレクトリ(簡潔にするために41個のフォルダを欠く)考えてみましょう。
Apps
ad
css
(empty)
glue-resources
css
glue1.css (keep this file!)
profile
css
glue1.css (remove this file!)
...
をこれまでのところ、私が持っているコードです。親ディレクトリのパスがglue-resources/css/
またはad/css/
でない場合は、glue1.cssファイルのrm
を呼び出す必要があります。
for dir in **/css/; do
if [[ "${dir}" != 'glue-resources/css/' || "${dir}" != 'ad/css/' ]]; then
rm "${dir}"glue1.css
fi
done
上記のコード結果は機能しません。私は同じ 'No such file or directory'エラーを表示し、glue-resources/css
のglue1.cssファイルが削除されました。なぜそれがうまくいかないのか分かりません。[[
と]]
を使用すると、複数の条件を組み合わせることができます。
私は、bashで複数の条件がどのように動作するのか分かりません。以下のバージョンのコードが動作します。
for dir in **/css/; do
if [[ "${dir}" != 'glue-resources/css/' ]]; then
rm "${dir}"glue1.css
fi
done
for dir in **/css/; do
if [[ "${dir}" != 'ad/css/' ]]; then
rm "${dir}"glue1.css
fi
done
if文に複数の条件を追加しようとして失敗しました。
[shellcheck](http://www.shellcheck.net)を試してみると、[この問題](https://github.com/koalaman/shellcheck/wiki/SC2055)が自動検出されます。 –