Bash
空格作為內聯 for 循環命令的換行符
有人願意告訴我為什麼第一個命令中的空格似乎被解釋為換行符?也會出現用 print 代替 echo。
$for l in $( find *.txt -exec head -1 {} \; ); echo $l;
9.16.11 09:20 9.19.11 18.41 9.21.11 07:15
$find *.txt -exec head -1 {} \;
9.16.11 09:20 9.19.11 18.41 9.21.11 07:15
查看專門查看 IFS 全域變數的 shell 的手冊頁。
具體來說,這樣做:
IFS=$(echo -en "\t\n\0")
根據 IFS,您的命令替換會在其輸出上引起分詞。具體來說,在這種情況下,它是按空格分割的。不要解析
find
. 相反,請執行以下操作:for file in *.txt; do head -1 "${file}" done
Wooledge wiki 也有關於這個問題的一些很好的資訊。