3

こんにちは、以下に示すようにシェル スクリプトで 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

一重引用符での変数置換はありません。次のように、展開の周りで double に切り替えます。

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 に答える