我在服务器上有一个脚本,其最后一行是一个打印值的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脚本中传递已经双引号的局部变量?
提前致谢