【问题标题】:pass bash variable as argument to gcc将 bash 变量作为参数传递给 gcc
【发布时间】:2015-10-29 14:57:21
【问题描述】:

我的目标是将一些变量值传递给 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] 

为什么它不起作用?

【问题讨论】:

    标签: c bash shell gcc compiler-optimization


    【解决方案1】:

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

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

    【讨论】:

    • 没错,但您也可以将括号替换为波浪括号{}${var}$var 一样工作。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 谢谢。 var="-fvpt -fwrapv -fwhole-program"; gcc -Q $var --help=optimizers 工作
      猜你喜欢
      • 2016-05-31
      • 2018-05-25
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多