技术解析

请问如何正确使用 shell 变量作为 Linux 编译安装程序时 configure 的选项参数
0
2021-07-02 15:51:46
idczone

正在写一个小脚本,需要从配置文件里读取 configure 参数然后编译安装 nginx ,代码如下。 ./configure $configure_parameters
make && make install

configure 的选项大致为: --prefix=/etc/nginx/ --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules/ --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic'

现在遇到的问题是无法处理带着单引号的 --with-cc-opt ,不加双引号报非法参数 -g ,加双引号则会获取不到正确的参数,显示为: ...... nginx path prefix: "/etc/nginx/ --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules/ --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' ...... 这样类似的配置结果,进而无法正确 make 。

请问各位有什么解决的办法呢?我对 Shell 也是刚入门,希望大家指导下。谢谢大家。


转义?

仍然不行诶

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服