2
我有一個循環在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
}
,並呼籲它使用
deleteOut 5
我期待一個循環像
/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
相反,我得到了
/bin/rm -rf ./OUT/Message_{0..5}.log
我已經解決了做這樣的事情,而不是
find ./OUT -name "Message_*.log" | xargs /bin/rm
的問題,但這不是重點。爲什麼我的第一種方法不起作用?
如果index = 0,則第二個命令將是正確的。第一個命令是不可用的,因爲範圍是0 .. $ 1和seq(據我所知)從1開始。但實際上你正在回答如何遍歷文件,而我的問題是關於範圍中的參數擴展。 「sehe」的答案是正確的:「Brace擴展在變量擴展之前出現」(我不知道它)。無論如何,謝謝你的回答。 – Luixv 2012-02-08 14:09:07
該鏈接解釋了擴展問題以及更多信息的鏈接。 – l0b0 2012-02-08 14:35:08