如何使用文件内容作为命令行参数?

mor*_*fis 9 linux bash

我想将文件中的参数用作命令行参数,用于某些命令,如gcc或ls.

例如 gcc -o output -Wall -Werro

作为文件包括:

-o output -Wall -Werro

用于gcc命令行调用.

car*_*and 16

有些程序使用"@"语义从文件中输入args,例如.gcc @argfile

其中,对于gcc,argfile包含选项

-ansi
-I/usr/include/mylib
Run Code Online (Sandbox Code Playgroud)

这可以嵌套,以便argfile可以包含

-ansi
-I/usr/include/mylib
@argfile2
Run Code Online (Sandbox Code Playgroud)

http://gcc.gnu.org/onlinedocs/gcc-4.6.3/gcc/Overall-Options.html#Overall-Options


Car*_*rum 11

你可以使用xargs:

cat optionsfile | xargs gcc
Run Code Online (Sandbox Code Playgroud)

编辑:我一直被投票,因为洛朗不知道如何xargs运作,所以这是证据:

$ echo "-o output -Wall -Werro" > optionsfile
$ cat optionsfile | xargs -t gcc
gcc -o output -Wall -Werro
i686-apple-darwin10-gcc-4.2.1: no input files
Run Code Online (Sandbox Code Playgroud)

-t标志导致stderr在执行之前写入命令.

  • 甚至是"xargs gcc <optionsfile". (4认同)

R S*_*hko 7

我建议$()与 cat 一起使用:

gcc $(cat file)
Run Code Online (Sandbox Code Playgroud)

过度反引号(经典方式)的好处$()是更容易将一个反引号嵌套在另一个反引号中:

gcc $(cat $(cat filename))
Run Code Online (Sandbox Code Playgroud)