我的目标是将一些变量值传递给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]
为什么它不起作用?
答案 0 :(得分:2)
$(var)
尝试执行命令var
并在命令行中使用其输出。要在bash中扩展变量,可以使用$var
var="-fvpt -fwrapv -fwhole-program"; gcc -Q $var --help=optimizers
答案 1 :(得分:1)
var="-fvpt -fwrapv -fwhole-program" && gcc -Q $var --help=optimizers
应该适合你。
答案 2 :(得分:0)
You should use an array, not a flat string, to store multiple options. (For the example, a string works, but it will fail for arguments that themselves contain whitespace, and may fail for options containing pattern metacharacters.)
args=(-fvpt -fwrapv -fwhole-program)
gcc -Q "${args[@]}" --help=optimizers