我正在尝试编写一个bash脚本,它接受一个变量并将其填充到一个有点复杂的字符串中,但我不知道如何让它工作。
我有以下bash代码..
PWD="foobar"
curl -XPOST "localhost/api/user/bob" -H 'Content-Type: application/json' -d '{"password" : "${PWD}"}
我想要发生的显然是:
curl -XPOST "localhost/api/user/bob" -H 'Content-Type: application/json' -d '{"password" : "foobar"}
但是,我所知道的迭代和扩展“技巧”似乎都不起作用,因为有大括号、单引号和双引号。
我试过了
$PWD
${PWD}
都没有用。
发布于 2022-04-08 18:08:02
您需要使用双引号来允许$PWD
展开。(这里的牙套与此无关。)
-d "{\"password": \"$password\"}"
但是,更好的方法是使用类似于jq
的东西来生成JSON,这样您就可以确保所有引用都是正确的,而没有shell干扰。
-d "$(jq -n --arg p "$password" '{password: $p}')"
https://stackoverflow.com/questions/71801303
复制相似问题