我有一個從argv讀取命令行參數的C程序。是否有可能使管道將文件的內容作爲命令行參數重定向到我的程序?假設我有一個文件arguments.dat
與此內容:如何從文件傳遞命令行參數
0 0.2 302 0
我希望我的程序可以這樣調用:
./myprogram 0 0.2 302 0
我試過如下:
cat arguments.dat | ./myprogram
沒有成功。
我有一個從argv讀取命令行參數的C程序。是否有可能使管道將文件的內容作爲命令行參數重定向到我的程序?假設我有一個文件arguments.dat
與此內容:如何從文件傳遞命令行參數
0 0.2 302 0
我希望我的程序可以這樣調用:
./myprogram 0 0.2 302 0
我試過如下:
cat arguments.dat | ./myprogram
沒有成功。
xargs
是你的答案:
cat arguments.dat | xargs ./myprogram
對於大多數shell中,可以插入一個文件的內容到命令行與$(<filename)
:
./myprogram $(<arguments.dat)
如果你的shell不支持,那麼其中一種較舊的方式將起作用:
./myprogram $(cat arguments.dat)
./myprogram `cat arguments.dat` # need this one with csh/tcsh
(You d知道命令行參數與文件輸入的區別,對嗎?你爲什麼期望將命令行參數傳送到程序中?)
「較舊的方法」不會拆分參數。所有來自文件的數據將作爲單個參數加載。 – osgx
@osgx:那簡直是不真實的。爲了使它成爲單一的參數,你需要把它放在雙引號內。 – caf