好的,我的Unix腳本編寫技能顯然非常生疏。我想要做的就是有一個帶有4個參數的文件,我想將它們傳遞給腳本,就好像它們來自命令行一樣。但奇怪的是這樣做:簡單的Unix重定向問題:將文件中的行作爲命令行參數傳遞給腳本
./myscript.sh < mycmds.txt
似乎並沒有按我期望的方式工作。 myscript.sh的內容是:
cat >> out.txt <<EOF
$1 $2 $3 $4
EOF
所以,如果我運行命令行myscript.sh這樣的:./myscript.sh test1 test2 test3 test4
一切都很正常,我看到test1 test2 test3 test4
在out.txt文件中顯示出來。但是,如果我將test1 test2 test3 test4
作爲一行放入名爲mycmds.txt的文件中,然後運行./mysript.sh < mycmds.txt
,我只需在out.txt文件中獲得一個空行。
那麼我在這裏做錯了什麼?在文件中存儲參數並將它們傳遞給腳本的正確方法是什麼,以便將它們視爲來自命令行?
Ooo ..我喜歡'$(<文件)'的外觀。 +1 –
謝謝,這似乎乾淨,簡單,有效。不知道爲什麼當我谷歌「輸入重定向unix」沒有提及更多,但也許它是一個語義的東西。不管怎樣,謝謝。 – Fraggle
從* bash *手冊:「命令替換$(cat文件)可以被替換爲等效但更快的$(<文件)」。它與輸入重定向很少有關係,所以不要把它看作是'