在cURL命令中使用环境variables – Unix

我的问题很简单。 我想在cURL命令中使用环境variables,类似于:

curl -k -X POST -H 'Content-Type: application/json' -d '{"username":"$USERNAME","password":"$PASSWORD"}' 

当我运行命令$ USERNAME作为“$ USERNAME”string传递给命令而不是variables的值。 有没有办法摆脱这种情况?

谢谢。

单引号禁止变量替换,所以使用双引号。 内部的双引号必须被转义。

 ... -d "{\"username\":\"$USERNAME\",\"password\":\"$PASSWORD\"}" 

为了减少引用,请从标准输入读取。

 curl -k -X POST -H 'Content-Type: application/json' -d @- <<EOF { "username": "$USERNAME", "password": "$PASSWORD"} EOF 

-d @foo从名为foo的文件中读取数据。 如果使用-作为文件名,则从标准输入读取。 在这里,标准输入是由here文档提供的,该文档被视为双引号字符串,而不用双引号将其封闭。