2012-12-17 5 views
3

Salut j'essaie d'utiliser curl dans le script shell comme indiqué ci-dessous mais je ne suis pas capable de substituer la variable $ line dans le CURL. veuillez suggérerutiliser curl dans le script shell pour substituer une variable

while read line 
do 
    echo "allowing mac $line" 
    curl -X POST -d '{"src-mac": "$line"}' http://localhost:8080/wm/firewall/rules/json 
    curl -X POST -d '{"dst-mac": "$line"}' http://localhost:8080/wm/firewall/rules/json 
done < /home/floodlight/allowedmacs 

Répondre

7

Aucune substitution de variable entre guillemets simples. Passer à doubler autour de l'expansion, comme celui-ci:

curl -X POST -d '{"src-mac": "'"$line"'"}' http://localhost:8080/wm/firewall/rules/json 
curl -X POST -d '{"dst-mac": "'"$line"'"}' http://localhost:8080/wm/firewall/rules/json 

Ou vous pouvez utiliser des guillemets doubles autour de la chose entière et échapper à des intérieurs:

curl -X POST -d "{\"src-mac\": \"$line\"}" http://localhost:8080/wm/firewall/rules/json 
curl -X POST -d "{\"dst-mac\": \"$line\"}" http://localhost:8080/wm/firewall/rules/json 

Quoi qu'il en soit, ne peut pas être à l'intérieur unique citations lorsque vous arrivez à $line si vous le voulez étendu.

+0

ou permuter les guillemets simples/doubles: '" {'src-mac': '$ line'} "' –

+1

@glennjackman - non. Bien qu'un littéral valide dans le code javascript, ce n'est pas légal [JSON] (http://www.json.org/), ce qui nécessite des guillemets doubles autour des chaînes. –

Questions connexes