2015-10-29 39 views
2

我的目標是將一些變量值傳遞給gcc。這裏我舉的例子:將bash變量作爲參數傳遞給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] 

爲什麼它不工作?

回答

2

$(var)嘗試執行命令var並在命令行中使用其輸出。爲了擴大在bash的變量,你可以使用$var

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

這是正確的,但你也可以用花括號代替括號' {}'。 '$ {var}'就像'$ var'一樣工作。 – chicks

1

var="-fvpt -fwrapv -fwhole-program" && gcc -Q $var --help=optimizers應該爲你工作。

0

您應該使用數組而不是扁平字符串來存儲多個選項。 (對於例如,一個字符串的工作,但它會失敗的論點,本身包含空格,並且可能無法包含模式元字符選項。)

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

謝謝。 var =「 - fvpt -fwrapv -fwhole-program」; gcc -Q $ var --help = optimizers起作用 – staticx