用 cURL 命令中的变量替换字符串 [重复]

Posted

技术标签:

【中文标题】用 cURL 命令中的变量替换字符串 [重复]【英文标题】:Replacing a string with a variable in a cURL command [duplicate] 【发布时间】:2018-01-17 18:55:40 【问题描述】:

我正在尝试尽可能简单地自动化 GroupMe 机器人。从命令行发送消息的一种简单方法是使用以下命令:

curl -d '"text" : "Your message here", "bot_id" : "this_is_a_secret_string"' https://api.groupme.com/v3/bots/post

在 Shell 脚本中,我想将 "Your message here" 替换为 var,其中 var 被设置为不同命令的输出。这可能吗?

我已将“您在此处的消息”替换为无效的内容:

var
$var
(var)
$(var)
var
$var

任何放在双引号 ("") 中的内容都被视为字符串,因此在这些方面没有做太多尝试。

【问题讨论】:

【参考方案1】:

var 不会被评估,因为它是带单引号的。解决此问题的一种方法是将 3 个字符串粉碎在一起:

curl -d '"text" : "'"$var"'Your message here", "bot_id" : "this_is_a_secret_string"' https://api.groupme.com/v3/bots/post
字符串 1:'"text" : "' 字符串 2:"$var" 字符串 3:'Your message here", "bot_id" : "this_is_a_secret_string"'

注意:这仅适用于var 的内容非常简单的情况。展开后的字符串必须仍然是有效的 JSON 字符串。

【讨论】:

完美运行!没想到 var 需要双引号,非常感谢!

以上是关于用 cURL 命令中的变量替换字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

用 Get-ADGroup 中的变量替换字符串

如何用数据框中的字符串值替换 int 值[重复]

替换字符串名称中的文本[重复]

bat命令怎么替换里面的字符串?

bat SET中替换字符串(用变量代表需替换的字符串)

尝试替换环境变量时,Linux sed命令无法正常工作[重复]