在shell脚本中使用curl来替换变量

时间:2012-12-17 03:15:22

标签: shell curl

您好我正在尝试在shell脚本中使用curl,如下所示,但我无法替换CURL中的变量$ line。请建议

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

1 个答案:

答案 0 :(得分:7)

单引号中没有变量替换。切换到扩展的两倍,如下所示:

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

或者你可以在整个事物中使用双引号并逃避内在的:

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

无论哪种方式,如果你希望它扩展到$line,就不能在单引号内。