我手邊沒有linux,而是使用compileonline.com檢查bash中的一些代碼,但我是bash的新手。有人可以舉手嗎?什麼輸出將回聲>產生?
for var
do echo $var > fniz
cat fniz
done
參數是123 ABC XYZ
我的猜測是,輸出將是:
123
123
abc
123
abc
xyz
但我不知道,回聲是$ var是否> fniz覆蓋fniz或寫入新的一行。它會覆蓋文件嗎?
我手邊沒有linux,而是使用compileonline.com檢查bash中的一些代碼,但我是bash的新手。有人可以舉手嗎?什麼輸出將回聲>產生?
for var
do echo $var > fniz
cat fniz
done
參數是123 ABC XYZ
我的猜測是,輸出將是:
123
123
abc
123
abc
xyz
但我不知道,回聲是$ var是否> fniz覆蓋fniz或寫入新的一行。它會覆蓋文件嗎?
它每次
$ cat script.sh
for var in 123 abv xyz
do
echo $var > fniz
cat fniz
done
$ ./script.sh
123
abv
xyz
如果要追加,使用>>
沒有。正如你寫的那樣,輸出結果只會是「xyz」,因爲你每次都在打斷文件。 – Emmet
@Emmet真的。但請注意,我們在循環中調用'cat fniz',因此它會打印所有三個值。執行後的文件內容確實是'xyz' – user000001
啊,對。我誤解了你的例子的意圖。我的錯。 – Emmet
請檢查有關重定向手動覆蓋文件:https://www.gnu.org/software/bash/manual /html_node/Redirections.html – konsolebox
>重定向。 >>追加。 – dcaswell
請注意''bash'有一個'noclobber'選項,如果設置了這個選項,它會阻止你覆蓋現有的文件(即第二個和更多的'echo's會失敗),在這種情況下你將不得不使用'>!' –