簡體   English   中英

如何在bash腳本中傳遞變量的雙引號值作為curl命令的參數?

[英]How to pass a double quoted value of a variable, as argument of the curl command, in a bash script?

我在服務器上有一個腳本,該腳本的最后一行是回顯,它會打印如下所示的URL值:

.
.     < 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,可以將其作為curl命令的參數傳遞,以了解應用程序是否正在運行(因此,此示例中的應用程序名稱為AppTest和我必須提供的JavaMonitor密碼為了能夠查詢是abcd&9e0Xy

如果打開終端,我可以簡單地將此URL粘貼在單引號中並運行以下命令

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'

到目前為止,我已經嘗試過用單引號將可能的連接進行不同的組合,但是問題仍然存在。 curl根本不返回任何東西,或者我收到一條錯誤消息,指示未提供密碼。

任何想法? 如何在bash腳本中傳遞已經雙引號的局部變量來卷曲?

提前致謝

您可以使用tr將雙引號轉換為單引號

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM