将 bash 变量作为参数传递给 gcc

pass bash variable as argument to gcc

我打算将一些变量值传递给 gcc。这是我的例子:

命令:

gcc -Q -fvpt -fwrapv -fwhole-program --help=optimizers 

输出:

-fvpt                       [enabled] 
-fwhole-program             [enabled] 
-fwrapv                     [enabled] 

当我 运行:

var="-fvpt -fwrapv -fwhole-program"; gcc -Q $(var) --help=optimizers 

输出:

-fvpt                       [disabled] 
-fwhole-program             [disabled] 
-fwrapv                     [disabled] 

为什么它不起作用?

$(var) 尝试执行命令 var 并在命令行中使用其输出。要扩展 bash 中的变量,您可以使用 $var

var="-fvpt -fwrapv -fwhole-program"; gcc -Q $var --help=optimizers 

var="-fvpt -fwrapv -fwhole-program" && gcc -Q $var --help=optimizers 应该适合你。

您应该使用数组而不是扁平字符串来存储多个选项。 (例如,字符串有效,但对于本身包含空格的参数会失败,并且对于包含模式元字符的选项可能会失败。)

args=(-fvpt -fwrapv -fwhole-program)
gcc -Q "${args[@]}" --help=optimizers