@by_EL

Как правильно передать значения к переменную внутри команды curl?

Здравствуйте ребята проблема такова как мне правильно передать аргумент к команде с помощью переменных чтобы внутри curl команды это правильно обрабатывалось (без каких либо лишних запятой)
Вот сам скрипт
#!/bin/bash
main() {
curl  --output /dev/null $1 -sX PUT --data-binary @appilication.yml https:/example1.consul.com/v1/kv/config/test/test/test/data -k
curl  --output /dev/null $2 -sX PUT --data-binary @appilication.yml https:/example2.consul.com/v1/kv/config/test/test/test/data -k
main "--header \"Authorization: Bearer token_for_example1\"  "curl --header \"Authorization: Bearer token_for_example2\"

Проблема в том что при обработке curl как-то обрабатывает это лишними кавычками ' (который я пробовал удалить через tr но все ровно)
Само по себе если выполнять просто команду без каких либо использований переменных то все работает прекрасно
Заранее благодарен !!
  • Вопрос задан
  • 172 просмотра
Пригласить эксперта
Ответы на вопрос 4
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Интересно, а зачем в аргумент функции main() запихивать команду curl?
Ведь в функции вызов curl уже есть, уже вписан, и получается двойной curl:
curl  --output /dev/null curl --header \"Authorization: Bearer token_for_example1\" -sX ...


Хотя нет, не получается. У вас ещё и не закрыта двойная кавычка после первого аргумента!
Ответ написан
Комментировать
@SunTechnik
Не очень понятно зачем тут функция main. Это все же не C.
Описание функции main не закрыто. Нет второй фигурой скобки.

Внутри функции main происходит вызов её самой.
Рекурсия? Или fork-бомба?
В аргумента к curl передаётся сам curl.

Потом какой-то трэш с экранирование кавычек.
В общем, цель и задумка автора непонятны.
Ответ написан
Комментировать
karabanov
@karabanov Куратор тега Linux
Системный администратор
#!/bin/bash -e

main() {
  curl  --output /dev/null \
        --header "Authorization: Bearer $1" \
        --silent \
        --request PUT \
        --data-binary @appilication.yml \
        --insecure https:/$2/v1/kv/config/test/test/test/data
}

main token_for_example1 example1.consul.com
main token_for_example2 example2.consul.com
Ответ написан
Комментировать
bioid
@bioid
Попробуйте экранировать переменные.
\$1
\$2
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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