2015-12-15 63 views
0

我想在Perl腳本中傳遞一個變量來curl命令。但它失敗了。如何在perl腳本中傳遞一個變量來curl命令?

但是,當我從命令提示符運行相同的curl命令它正在工作。

my $id=3; 

system('curl -D- -u username:password -X PUT --data {\"fields\":{\"priority\":{\"id\":\"${id}\"}}} -H "Content-Type: application/json" -k https:request); 

當我執行上面的Perl腳本,我得到如下錯誤。

{"errorMessages":[],"errors":{"priority":"The priority selected is invalid."}}after curl command 

當我從命令提示符通過用值替換id來運行上述命令時,它正在傳遞。

'curl -D- -u username:password -X PUT --data {\"fields\":{\"priority\":{\"id\":\"3 \"}}} -H "Content-Type: application/json" -k https:request 

請幫幫我,讓我知道什麼是錯在我的代碼。

+0

嗨鮑比,讓你的系統調用的值存儲到變量並將其打印到錯誤日誌(警告),查看您所呼叫的準確命令更改代碼。我注意到的一個區別是,在工作版本中,您爲ID添加了空格。也許這是原因? HTH George –

+0

my $ var = qq('curl -D- -u username:password -X PUT --data {\「fields \」:{\「priority \」:{\「i ...); warn $ var; system($ var); –

+0

感謝您的回覆。 運行完您的建議後,我可以看到命令爲: curl -D- -u username:pass -X PUT --data {「fields」 :{「priority」:{「id」:「3」}}} -H「Content-Type:application/json」-k https:網站 但是我收到另一個錯誤如下 {「errorMessages」 :[「意外字符('f'(code 102)):期待雙引號在[Source:[email protected];行:1,列:3]「]}後curl命令 謝謝!! – Bobby

回答

1

您正在將命令放在單引號內。而且perl在單引號內使用它。當你用命令傳遞$id變量時,我會建議你使用雙引號。例如

system("curl ... $id... -k https:request"); 
    ^double quote     ^

或者你可以通過使用連接這樣做。

system('curl -D- -u ...' . $id . '... -k https:request'); 
          ------ concatenation 
+0

添加連接後,我得到以下錯誤 [{」errorMessages「:[」意外的輸入結束: OBJECT(從[來源:[email protected];行:1,列:0])\ n]的 我已經給出的命令是: [系統('捲曲-D- -u用戶名:pass-X PUT --data {\「fields \」:{\「priority \」:{\「id \」:'。$ {id}。'}} -H「Content-Type:application/json 「-k https:request'); – Bobby

+0

@Bobby你的JSON有3個開放式支架和2個右側支架。這意味着你的json不正確! –

+0

@哈桑噢耶。我改變了它,但現在得到新的錯誤。 {「errorMessages」:[],「errors」:{「priority」:「無法在優先級對象中找到有效的'id'或'name'。}} curl命令後。 :( – Bobby

相關問題