gpt4 book ai didi

bash - 在命令前扩展包含其他变量定义的变量的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 09:38:58 25 4
gpt4 key购买 nike

具体来说,考虑案例:

MY_OPT_OPTIONS='CFLAGS="-O3 -march=native -mtune=native" CPPFLAGS="-O3 -march=native -mtune=native"'

现在我想用这些执行 g++:

"$MY_OPT_OPTIONS" gcc ...

但这会导致错误:

CFLAGS="-O3: command not found

我想要的只是让 MY_OPT_OPTIONS 变量按字面意义在线扩展,并让 gcc 与它的其他命令行参数一起执行。

最佳答案

通常,您不需要。预命令分配在参数扩展之前被识别。您必须使用 env 命令:

# Wrong, but read on...
env "$MY_OPT_OPTIONS" gcc ...

以便首先进行扩展,并将结果传递给 env,这会创建必要的环境。但是,env 需要每个赋值作为一个单独的参数,这意味着您需要使用数组才能正常工作。

MY_OPT_OPTIONS=(CFLAGS="-O3 -march=native -mtune=native" CPPFLAGS="-O3 -march=native -mtune=native")

env "${MY_OPT_OPTIONS[@]}" gcc ...

关于bash - 在命令前扩展包含其他变量定义的变量的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54674074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com