2014-10-03 57 views
1

我有一个bash脚本的问题,需要寻求一些帮助。脚本如下:Bash脚本双引号

#!/bin/bash 
config_options="CFLAGS=\"-Wall -pipe\"" 
./configure --prefix=$PWD/install $config_options 

如果我使用运行此脚本,我得到了错误“无法识别的选项 - 管道”。但是,如果我直接使用下面的命令,它就会起作用。

./configure --prefix=$PWD/install CFLAGS="-Wall -pipe" 

我的理解是,这个命令和bash脚本是完全一样的,因为我已经把我不知道为什么这个剧本给了一个错误之前”转义字符\。

请让我知道如果你需要更多信息

感谢

+1

推荐阅读:http://mywiki.wooledge.org/BashFAQ/050 – 2014-10-03 14:59:22

+0

你的理解是不正确的。 'config_options'中的引号不保护'-Wall'和'-pipe'之间的空格;它们被视为字符串中的字面章程。因此'configure'看到两个单独的参数'CFLAGS =“ - Wall和'-pipe”'。 – chepner 2014-10-03 15:04:08

回答

3

你不可错过的命令行选项在这样的字符串变量可以使用BASH阵来代替:。!。

#!/bin/bash 
config_options=(CFLAGS="-Wall -pipe") 
./configure --prefix=$PWD/install "${config_options[@]}"