我有一个编译脚本,可以使用或不使用调试符号来编译程序。
我想通过 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 ...