Команда оценки, хранящаяся в переменной среды [дубликат]

0
12.12.2016, 21:24
2 ответа

Как говорит Джейхендрен, вы должны использовать двойные кавычки, когда хотите интерполировать переменную. Но если ваше имя переменной находится непосредственно рядом с допустимыми символами имени переменной, вам нужно указать bash, где имя переменной начинается и заканчивается, заключив имя в фигурные скобки. Довольно сложно понять, что вы имеете в виду, когда описываете свою проблему в чем-то, что выглядит как код, но не выполняется, чтобы дать желаемый результат (или создает очень своеобразный fqdn), но я думаю, вы должны делать что-то вроде .. ..

ADDR="http://lookup.api.com/"
export ADDR
...
curl -s -o "${OUTPUTFILE}" "${ADDR}some/path"

Или вы имеете в виду, что URL-адрес, который вы действительно хотите получить, состоит из фрагмента, возвращенного из http://lookup.api.com ? В этом случае вам следует найти большую палку и использовать ее, чтобы многократно избивать человека, написавшего API, крича «302! 302! 302!». Если они намного больше вас или у вас есть ружье, вы можете рассмотреть метод, предложенный джайхедреном, однако, хотя он изящно лаконичен, это не особенно надежное решение. Вместо этого рассмотрим:

FRAG=`curl -s -o "${ADDR}some/path" | tr -d '\040\011\012\015'`
curl -s -o "${OUTPUTFILE}" "${ADDR}some/path"
0
28.01.2020, 04:49

Используйте двойные кавычки вместо одинарных:

SERVER_ADDRESS="$(curl -s http://lookup.api.com).restofaddress.com"

Интерполяции и расширения (например, раскрытие переменных или раскрытие команд, как в данном случае) выполняются внутри строк в двойных кавычках, но не в строках в одинарных кавычках.

0
28.01.2020, 04:49

Теги

Похожие вопросы