在 bash 脚本中用空格替换变量的值 - 正确的方法

在 bash 脚本中用空格替换变量的值 - 正确的方法

我有一个编译脚本,可以使用或不使用调试符号来编译程序。

我想通过 bash 提示符 ( read) 询问用户是否需要调试版本,如下所示:

compiler_options_for_debug_version=''
debug_flag=''
if [[ "$debug_switch" == "Y" ]]; then
    compiler_options_for_debug_version=("CFLAGS=\"-g -O0\"")
    debug_flag='--with-debug'
fi

但这CFLAGS="-g -O0"让我有些头痛,因为它给出了一个错误:

vagrant@node02:~$ compiler_options_for_debug_version=("CFLAGS=\"-g -O0\""); $compiler_options_for_debug_version;
CFLAGS="-g: command not found

我努力了:

compiler_options_for_debug_version=("CFLAGS=\"-g -O0\"")
compiler_options_for_debug_version="CFLAGS=\"-g -O0\""
compiler_options_for_debug_version='CFLAGS="-g -O0"'

我期望CFLAGS="-g -O0"这里有这样的事情:

$compiler_options_for_debug_version ./configure --with-luajit --with-http_postgres_module ...

所以它应该扩展到:

CFLAGS="-g -O0" ./configure --with-luajit --with-http_postgres_module ...

作为最后的手段,我可​​以添加一个if [ ... ]语句并进行硬编码,CFLAGS="-g -O0"但应该可以以正确的方式做到这一点。

答案1

只需将值放入变量中即可

compiler_options_for_debug_version=""
if something; then
    compiler_options_for_debug_version="-g -O0"
fi

然后确保在使用变量时引用该变量:这同样重要。

CFLAGS="$compiler_options_for_debug_version" ./configure ...

相关内容