以下 shell 片段應遍歷給定的空格分隔字串:
files="one two three"; for f in "$files"; do; echo "? $f"; done
期待:
? one
? two
? three
得到:
? one two three
如果 for 的值$files是硬編碼的,它可以與 一起使用files=(one two three),但是,該files="one two three"命令以 `files="one two three" 結尾。
如何修復此回圈以正確迭代字串?
uj5u.com熱心網友回復:
為什么不使用ls -1aand awk?
例如:
ls -1a | awk '{ print "? " $0 }'
這應該為您提供cwd以下格式的檔案串列:
? one
? three
? two
或者,按照評論中的建議,只需使用for loop.
for f in *; do echo "? $f"; done
uj5u.com熱心網友回復:
我采用了以下解決方案:
files="one two three"
array=(`echo $files`)
for f in $array; do
echo "? $f"
done
where$files可以是例如ls或一些任意命令的輸出,這些命令會回傳一個空格分隔的字串。
本質上,我還可以執行以下操作:
files=(`echo $(ls)`)
for f in $files; do
echo "? $f"
done

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416863.html
標籤:
