2014-10-03 2 views
1

У меня проблема с скриптом bash и вам нужно попросить о помощи. Сценарий следующий:Bash script double quote

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

Если я использую запустить этот сценарий, я получил ошибку «непризнанный вариант -pipe». Однако, если я непосредственно использую следующую команду, она работает.

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

Я понимаю, что эта команда и сценарий Баш точно так же, так как я уже положил побег символ \ перед». Я не знаю, почему этот сценарий дал ошибку.

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация

Благодаря

+1

Рекомендуемое чтение: http://mywiki.wooledge.org/BashFAQ/050 –

+0

Ваше понимание неверное. Кавычки в 'config_options' не защищают пробелы между' -Wall' и '-pipe'; они рассматриваются как буквальные чартеры в строке. В результате «configure» видит два отдельных аргумента «CFLAGS =» - Wall' и '-pipe». – chepner

ответ

3

вы не можете передавать в параметрах командной строки в строковой переменной, как это можно использовать BASH массив вместо:.!.

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