如何在bash脚本中传递变量的双引号值作为curl命令的参数?

时间:2015-05-05 10:16:20

标签: bash curl double-quotes single-quotes

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

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

我无法更改此脚本,我可以 捕获其返回值,即捕获url作为返回值 在我的本地bash脚本中声明的变量内部,如下所示:

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

以下是此类网址的示例(当然,出于保密原因 我改变了值)

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

上面的示例主要是一个WebObjects应用程序信息URL,可以作为一个传递 curl命令的参数,以便知道是否有应用程序 正在运行(因此此示例中的应用程序名称为 AppTest 和JavaMonitor 我必须提供的密码才能查询 abcd&amp; 9e0Xy

如果我打开终端,我只需将此网址粘贴在单引号中即可 运行以下

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

所以我必须将字符串括在单引号中以转义特殊字符并且效果很好,如果应用程序AppTest实际运行,则curl返回 YES

现在我需要做的就是完全按照我上面所写的内容完成 bash脚本和url不是手动编写在单引号内但是 它存储在变量中。

以下是我的工作:

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

由于URL中的特殊字符,问题是(我推测)。似乎curl没能 正确地解释这个论点。我甚至删除了双引号,但事实并非如此 解决问题。

所以我的问题是:我该怎么办?如何转换已经双引号字符串 (回想一下,这是在远程服务器上完成的,而我无法改变) 单引号字符串?所以curl会把它当成一系列字符 没有解释他们?就像我在上面的终端示例中写的那样:

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

到目前为止,我尝试过使用单引号进行可能串联的不同组合 但问题仍然存在。卷曲不会返回任何内容或我收到错误消息 表示尚未提供密码。

有什么想法吗?如何在bash脚本中传递已经双引号的局部变量?

提前致谢

0 个答案:

没有答案