2011-07-05 69 views
2

我有一個從argv讀取命令行參數的C程序。是否有可能使管道將文件的內容作爲命令行參數重定向到我的程序?假設我有一個文件arguments.dat與此內容:如何從文件傳遞命令行參數

0 0.2 302 0 

我希望我的程序可以這樣調用:

./myprogram 0 0.2 302 0 

我試過如下:

cat arguments.dat | ./myprogram 

沒有成功。

回答

10

xargs是你的答案:

cat arguments.dat | xargs ./myprogram 
6

對於大多數shell中,可以插入一個文件的內容到命令行與$(<filename)

./myprogram $(<arguments.dat) 

如果你的shell不支持,那麼其中一種較舊的方式將起作用:

./myprogram $(cat arguments.dat) 
./myprogram `cat arguments.dat` # need this one with csh/tcsh 

(You d知道命令行參數與文件輸入的區別,對嗎?你爲什麼期望將命令行參數傳送到程序中?)

+0

「較舊的方法」不會拆分參數。所有來自文件的數據將作爲單個參數加載。 – osgx

+0

@osgx:那簡直是不真實的。爲了使它成爲單一的參數,你需要把它放在雙引號內。 – caf

相關問題