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

use*_*427 3 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
Run Code Online (Sandbox Code Playgroud)

Mar*_*eed 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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,当$line你想要扩展时,不能在单引号内.