如何在Ruby的反引号命令中替换变量

合资企业

我正在尝试在我的Rails应用程序中进行curl调用以进行情感分析,如此处所示https://algorithmia.com/algorithms/nlp/SentimentAnalysis

text =   "I love coding"
secret = "yv5julwo8l7biwuni62r37t823igd87d97u623568yf"

result = `curl -X POST -d '"#{text}"' -H 'Content-Type: application/json' -H 'Authorization: Simple #{secret}' https://api.algorithmia.com/v1/algo/nlp/SentimentAnalysis/0.1.2`
result = JSON.parse(result)

但是在反勾号内部,它没有正确替换值。那么如何在curl命令中替换变量?

当我使用执行此代码时I love coding0在他们的网站上得到响应时,我得到了2(是正确的),因此使我相信它不能正确替代变量值。

乔丹跑步

用最简单的参数进行系统调用时,应始终使用Shellwords库来确保对参数进行正确的转义和/或引用。例如:

require "shellwords"

text = '"I love coding"'
secret = "yv5julwo8l7biwuni62r37t823igd87d97u623568yf"

args = [ "-X", "POST",
         "-d", text,
         "-H", "Content-Type: application/json",
         "-H", "Authorization: Simple #{secret}",
         "https://api.algorithmia.com/v1/algo/nlp/SentimentAnalysis/0.1.2" ]

data = `curl #{args.shelljoin}`
result = JSON.parse(data)

而且,正如Tin Man指出的那样,反引号既不是在Ruby中进行系统调用的唯一方法,也不一定是最佳方法。我强烈建议您阅读以下系列文章:https : //devver.wordpress.com/2009/06/30/a-dozen-or-so-ways-to-start-sub-processes-in-ruby-part-1 /

最后,当有诸如rest-client,faraday和httparty之类的宝石出现时,通常不是通过Ruby发出HTTP请求的最佳方法,更不用说标准库中的Net :: HTTP了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

反引号中的多字参数(命令替换)

如何在双引号内的命令中嵌入变量?

如何在命令变量中设置包含引号的var

如何在反引号内使用变量

如何配置ZSH命令替换以不使用反引号(`)?

如何在反引号中添加反引号?

如何在反引号中创建反引号?

如何在ksh命令替换中包含变量?

如何在bash脚本中替换引号

如何在GHCi中插入反引号?

如何在使用ruby的反引号操作中使用bash配置文件中定义的别名?

使用 sed s/regex/replacement/,如何在替换中同时使用双引号 " 和变量 $v?

如何在bash命令替换中转义单引号字符

如何在bash命令中嵌套引号

如何在 JavaScript 中的引号内的引号中插入变量

如何在反引号内传递bash变量

如何在单引号中扩展变量?

Python如何在引号中设置变量

如何在引号中打印变量?

当命令作为变量传递时,如何在命令替换中包括stdout / stderr重定向?

如何在双引号中将变量作为命令参数?

如何在bash中使用包含引号的变量运行命令?

如何在Ruby中执行字符串替换而不进行反斜杠转义

$()是否可以始终替换反引号来替换命令?

如何在python中替换列表中的单引号

执行Windows命令时,如何阻止Golang用反斜杠替换双引号?

如何理解在 Bash 中被双引号包围的命令替换中的引号?

如何在sed命令中使用变量替换属性文件中的属性值

如何在vi中的引号之间替换文本