波紋管行代碼不工作,它不遍歷目錄。在unix中需要幫助以迭代for循環
input={20132802,20132802}
for i in $(ls -1 /home/$input/*s.log)
do
...
done
但是當在循環中提供輸入工作正常。
for i in $(ls -1 /home/{20132802,20132802}/*s.log)
do
...
done
請大家幫忙。
波紋管行代碼不工作,它不遍歷目錄。在unix中需要幫助以迭代for循環
input={20132802,20132802}
for i in $(ls -1 /home/$input/*s.log)
do
...
done
但是當在循環中提供輸入工作正常。
for i in $(ls -1 /home/{20132802,20132802}/*s.log)
do
...
done
請大家幫忙。
嘗試編寫$ {input}而不是$ input,因爲我是for循環的索引,並且我猜$ $用於編寫$ input('$ i'nput)時。
Brace擴展不能用於變量,因爲它在任何其他擴展之前執行。 從man bash
:
括號擴展被任何其他擴展之前執行,並且特別的其他擴展任何 字符在結果保留。它 是嚴格的文本。 Bash不會將任何語法解釋 應用於擴展的上下文或大括號之間的文本。爲了避免與參數擴展衝突,字符串'$ {'不是 被認爲有資格進行大括號擴展。
但是,您可以使用eval
來克服這個限制:
input={20132802,20132802}
for i in $(eval ls -1 /home/$input/*s.log)
do
...
done
強制性閱讀:eval
is evil
謝謝......它工作:) – 2013-03-05 12:58:56
它不是working.the ls命令不通過目錄遍歷。 – 2013-03-05 11:06:33