Аргументы внутри строки в сценарии оболочки - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь использовать скрипт оболочки, который выглядит следующим образом:

#!/bin/bash
echo "First arg: $1"
echo "Second arg: $2"
curl -w "\n" -d '{"ssid": "$1", "psk": "$2" }' \
 -H "Content-Type: application/json" \
 -X POST localhost:8080/connect

Проблема в том, что внутри команды curl она принимает $ 1 и $ 2 как строки, а не аргументы. Если я попытаюсь удалить ": s, то он вообще не будет работать.

Кто-нибудь знает, как это решить?

1 Ответ

0 голосов
/ 30 апреля 2018

Вы хотите использовать двойные кавычки (для правильного расширения переменных), но экранировать кавычки в строке с обратными косыми чертами перед ними (и пропустить -X POST при использовании -d, потому что ):

#!/bin/bash
echo "First arg: $1"
echo "Second arg: $2"
curl -w "\n" -d "{\"ssid\": \"$1\", \"psk\": \"$2\" }" \
 -H "Content-Type: application/json" localhost:8080/connect
...