如何从文件传递命令行参数

Jon*_*rdo 3 linux pipe cat argv command-line-arguments

我有一个C程序从argv读取命令行参数.是否可以将管道重定向到文件的内容作为命令行参数到我的程序?假设我有一个arguments.dat包含此内容的文件:

0 0.2 302 0
Run Code Online (Sandbox Code Playgroud)

我希望通过以下方式调用我的程序:

./myprogram 0 0.2 302 0
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

cat arguments.dat | ./myprogram
Run Code Online (Sandbox Code Playgroud)

没有成功.

Ker*_* SB 11

xargs 是你的答案:

cat arguments.dat | xargs ./myprogram
Run Code Online (Sandbox Code Playgroud)

或者更容易:

xargs -a arguments.dat ./myprogram
Run Code Online (Sandbox Code Playgroud)

查看手册以了解许多自定义方法xargs.例如,您可以逐行而不是按单词阅读,并且可以在更复杂的替换中使用参数.


gee*_*aur 5

对于大多数shell,您可以将文件的内容插入到命令行中$(<filename):

./myprogram $(<arguments.dat)
Run Code Online (Sandbox Code Playgroud)

如果你的shell不支持,那么旧的方法之一将起作用:

./myprogram $(cat arguments.dat)
./myprogram `cat arguments.dat`   # need this one with csh/tcsh
Run Code Online (Sandbox Code Playgroud)

(您确实知道命令行参数和文件输入之间的区别,对吗?为什么您希望将命令行参数传递到程序中?)