Ruby 内からスクリプトを実行する方法を知っています。私は通常、バックティックを使用しますが、正常に動作します。最近、スクリプトにもう 1 つの引数を与えるようにというリクエストがありましたが、ここで問題が発生しました。
もともと、それは次のように見えます: 次のように定義されたグローバル変数:
SCRIPT = "/opt/customer/send_command.pl"
次に、呼び出します
status =`"#{SCRIPT}" -c "ctl.pl qstatus"`
queue = `"#{SCRIPT}" -c "ctl.pl queue"`
すべて順調。ここで、スクリプト send_command.pl に入力するパラメーターがもう 1 つあります。そこで、グローバル変数 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 production をどこにでも置くことができると思いますが、理想的ではなく、エラーが発生しやすくなります。