#shell #quotes
#оболочка #кавычки
Вопрос:
Я пытаюсь сформировать параметрический вызов curl из сценария оболочки
header_string="--header "X-param1: 1" --header "X-param2: 2""
url="http://example.com"
command="curl $header_string $url"
a=`${command}`
Это не работает, потому что оно интерпретируется как
curl --header '"X-param1:' '1"' --header '"X-param2:' '2"' http://example.com
Как я могу процитировать это правильно?
Ответ №1:
Если вы используете BASH, вы можете эффективно использовать массивы BASH:
header_string=(--header "X-param1: 1" --header "X-param2: 2")
url="http://example.com"
command="$(curl -s "${header_string[@]}" "$url")"
Но если вы используете old sh
, тогда используйте dreaded eval
:
header_string="--header "X-param1: 1" --header "X-param2: 2""
url="http://example.com"
command=`eval "curl $header_string $url"`
Комментарии:
1. Хорошее (ab) использование
eval
. 1.2. Предпочтительный способ — использовать BASH и избегать
eval
🙂