3

嗨,我正在尝试在 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
4

1 回答 1

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无论哪种方式,如果你想扩展它,当你到达时不能在单引号内。

于 2012-12-17T03:17:26.687 回答