簡體   English   中英

在Ruby中使用參數運行Shell腳本

[英]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.

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