私はbashスクリプトの中で、簡単なループを持っていますが、それはうまくいかず、何が間違っているのかわかりません。Bashループと関数のパラメータ展開
#!/bin/bash
function deleteOut {
for index in {0..$1}
do
echo "/bin/rm -rf ./OUT/Message_${index}.log"
/bin/rm -rf ./OUT/Message_${index}.log
done
}
とする代わりに、私は
/bin/rm -rf ./OUT/Message_{0..5}.log
012を得た私は
/bin/rm -rf ./OUT/Message_0.log
/bin/rm -rf ./OUT/Message_1.log
/bin/rm -rf ./OUT/Message_2.log
/bin/rm -rf ./OUT/Message_3.log
/bin/rm -rf ./OUT/Message_4.log
/bin/rm -rf ./OUT/Message_5.log
のようなループを期待していた
deleteOut 5
使用してそれを呼ばれます
私は
代わりfind ./OUT -name "Message_*.log" | xargs /bin/rm
をこのような何かをやって問題を解決してきましたが、これはポイントではありません。なぜ私の最初のアプローチがうまくいかなかったのですか?
2番目のコマンドは、index = 0の場合は正しくなります。最初のコマンドは使用できません。範囲は0 .. $ 1とseq(私が知る限り)は1から始まります。しかし実際には、ファイルのループ処理の方法には答えていますが、問題は範囲のパラメータ拡張に関するものです。 "sehe"の答えは正しいです: "ブレース拡張は変数拡張の前に来ます"(私はそれを知らなかった)。とにかく、あなたの答えをありがとう。 – Luixv
このリンクでは、拡張の問題と詳細な情報へのリンクが説明されています。 – l0b0