想要問一些bash中的內容。done while while循環中的{{filename}
當使用while循環我見過使用最後一行,看起來像這樣的:
做< {文件名}
讀取文件時所看到的例子。
while read line; do
echo $line
done < file
我估計是被檢查了一些布爾語句,但「文件」不以任何方式得到改變。
這究竟意味着什麼?
想要問一些bash中的內容。done while while循環中的{{filename}
當使用while循環我見過使用最後一行,看起來像這樣的:
做< {文件名}
讀取文件時所看到的例子。
while read line; do
echo $line
done < file
我估計是被檢查了一些布爾語句,但「文件」不以任何方式得到改變。
這究竟意味着什麼?
With <你基本上是說發送「文件」的內容到while循環。
完整文檔:Bash Redirections
while read line; do
echo $line
done < file
這不是bash
具體。它將文件重定向到循環的標準輸入。在你顯示的情況下,這轉到read
命令。那麼這有什麼問題?
while read line < file # WRONG!
do
echo $line
done
這將給出無限循環。爲什麼?因爲read line < file
讀取file
的第一行。所以呢?那麼它在循環的每次迭代中都會這樣做,不斷讀取文件的第一行。這是因爲它實際上讀取文件的第一行,然後關閉文件,文件位置不保留。
只有當read
不成功時(返回非零),循環纔會退出,這通常是在它碰到文件結束(EOF)時。在錯誤的例子中它永遠不會命中EOF,它每次成功讀取第一行,所以我們得到一個無限循環。
的語法也可以用在函數中(雖然你看不到它經常):
myfunc() {
while read line; do
echo $line
done
} < file
最後,檢查你明白這一點,這裏將發生什麼?
while read line
do
echo "x" $line
cat
done < file
謝謝,需要習慣來砸語法 – AlphaBeta