我正在尝试在bash脚本中创建一个变量,并且第一个空格引起了问题。
变量看起来像这样:
const workbook = new Excel.Workbook();
我正在尝试运行“ make install”,并且它总是抱怨第一个空格(即,在上面的示例中,单词“ here”之前)。
如何创建带空格的变量?我尝试使用双引号,尝试了各种转义单引号的方法,但我什么都无法工作。
我在做什么错了?
下面的实际代码:
VAR="
--option1=foo \
--option2=bar \
--option3='something here with spaces'"
答案 0 :(得分:3)
您还没有显示如何使用此变量,但是如果我理解正确,那么您有一个命令在引号之外包含$VAR
。
问题在于:
echo $VAR
等效于此:
echo "--option1=foo" "--option2=bar" "--option3='something" "here" "with" "spaces'"
因为变量内的空格很重要,但变量内的引号却没有。
相反,您需要使用 array 。您可以这样声明变量:
VAR=(
--option1=foo
--option2=bar
--option3='something here with spaces'
)
并像这样使用它:
echo "${VAR[@]}" # note the quotation-marks
等效于此:
echo "--option1=foo" "--option2=bar" "--option3=something here with spaces"
答案 1 :(得分:0)
我尝试了所有可能的转义引号组合,最后以“ configure”语句结束,而没有像这样的双引号或单引号变量:
./configure --prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--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 \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx \
--group=nginx \
--with-cc-opt="-m64 -march=native -DTCP_FASTOPEN=23 -g -O3 -Wno-error=strict-aliasing -fstack-protector-strong -flto -fuse-ld=gold --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wno-deprecated-declarations -gsplit-dwarf" \
--with-ld-opt="-ljemalloc -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie" \
$NGINX_MODULES
我也有一些错误,例如必须使用以下命令安装“ jemalloc”:
apt-get install libjemalloc-dev
与从bash脚本中的空格或引号开始相比,这是从源代码构建nginx的更大练习。我希望这可以帮助其他人克服我遇到的许多挑战。