如何在bash脚本中传递变量的双重引用值作为卷曲命令的参数



我在服务器上有一个脚本,其最后一行是一个echo,它打印值像这样的网址:

.
.     < the script code here >
.
echo "url"      # The last line of this script

我没有更改此脚本的可能性,我可以捕获其返回值,即将URL捕获为返回值在我本地bash脚本中声明的变量中,类似的内容:

cmd_url=$(ssh . . . <distinct script>)

这是这样的URL的一个示例(出于机密原因,当然是我更改了值)

http://mydomain:56789/cgi-bin/WebObjects/JavaMonitor.woa/admin/running?type=app&name=AppTest&pw=abcd&9e0Xy

上面的示例主要是webobjects应用程序信息url,可以作为一个卷曲命令的参数以了解应用程序是否正在运行(因此此示例中的应用程序名称是 apptest 和Javamonitor我必须提供的密码才能查询能够查询的密码 abcd&amp; 9e0xy

如果我打开一个终端,我可以简单地将此URL 粘贴在单个引号和运行以下

curl -s -X GET 'http://mydomain:56789/cgi-bin/WebObjects/JavaMonitor.woa/admin/running?type=app&name=AppTest&pw=abcd9e0Xy'

所以我必须将字符串包装在单引号中以逃脱特殊字符,并且如果应用程序实际运行,则效果很好,则curl return

现在我需要做的就是做我上面写的精确的工作,除了它在内部完成bash脚本和URL不是在单个引号中手动编写的,而是它存储在变量中。

这是我要做的:

cmd_url=$(ssh . . . <distant script>)
ret_msg=$(curl -s -X GET "$cmd_url")

由于URL中的特殊字符,问题是(我假定)。看来卷发没有正确解释论点。我什至删除了双引号,但没有解决问题。

所以我的问题是:我应该如何进行?如何转换已经引用的字符串(回想一下,这是在遥远的服务器上完成的,我无法将其更改为一个引用的字符串?这样卷曲就可以将其作为字符的顺序不解释它们?就像我在终端示例中写的那样:

'http://mydomain:56789/cgi-bin/WebObjects/JavaMonitor.woa/admin/running?type=app&name=AppTest&pw=abcd9e0Xy'

到目前为止,我尝试了不同的串联组合与单引号但是问题仍然存在。要么卷曲根本不返回任何东西,要么我收到错误消息指示尚未提供密码。

有什么想法吗?我如何通过已经引用本地变量以在bash脚本中卷曲?

预先感谢

您可以使用TR将双引号转换为单号

$ echo "foo" | tr '"' "'"
'foo'

相关内容

  • 没有找到相关文章