[英]Run shell script with parameter in Ruby
我知道如何從Ruby中運行腳本。 我通常使用反向刻度線,它們工作正常。 最近,我們接到要求向腳本提供更多參數的請求,並且這里發生了問題。
最初看起來是這樣的:全局變量定義為:
SCRIPT = "/opt/customer/send_command.pl"
然后,我們打電話
status =`"#{SCRIPT}" -c "ctl.pl qstatus"`
queue = `"#{SCRIPT}" -c "ctl.pl queue"`
一切順利。 現在,還有一個參數可以輸入腳本send_command.pl。 所以我將全局變量SCRIPT更改為:
SCRIPT = "/opt/customer/send_command.pl -p production"
我使用相同的方式來調用該腳本:
status =`"#{SCRIPT}" -c "ctl.pl qstatus"`
但是我得到了錯誤信息:
sh: /opt/customer/send_command.pl -p production: not found
如果我放棄SCRIPT變量,只需直接調用腳本即可:
status = `/opt/customer/send_command.pl -p production -c "ctl.pl qstatus"`
並且它按預期工作。
我的問題是為什么會發生這種情況以及如何解決? 我想我可以手動將-p生產放到任何地方,但是它不太理想,而且容易出錯。
它沒有用,因為您有多余的雙引號。 要修復此問題,請將其刪除。
status =`#{SCRIPT} -c "ctl.pl qstatus"`
刪除雙引號:
從:
status =`"#{SCRIPT}" -c "ctl.pl qstatus"`
至
status =`#{SCRIPT} -c "ctl.pl qstatus"`
除非您想嘗試將它們轉義:
status ="#{SCRIPT} -c \"ctl.pl qstatus\""
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.