Вызов команд Bash с несколькими аргументами из Ruby? - PullRequest
1 голос
/ 03 марта 2011

Я пишу этот код в моем проекте rails. Он предназначен для выполнения сценария оболочки, но мой сценарий оболочки может перехватывать только @directdown.

сценарий rails

@cmd = "/downafile.sh #{@directdown} #{@file.id} #{@filename}"
`#{@cmd}`

сценарий оболочки

echo $1 >> /tmp/ceshi.tmp
echo $2 >> /tmp/ceshi.tmp
echo $3 >> /tmp/ceshi.tmp

Спасибо.

Ответы [ 3 ]

1 голос
/ 03 марта 2011

`` и системная команда работают аналогичным образом. Но системный метод вернет true в случае успеха.

Попробуйте с этим:

@cmd = "/downafile.sh '#{@directdown}' '#{@file.id}' '#{@filename}'"
  `#{@cmd}`
1 голос
/ 03 марта 2011

Попробуйте использовать puts @cmd, чтобы увидеть сгенерированную команду и посмотреть, соответствует ли она вашей цели. Если это так, попробуйте выполнить его из терминала, чтобы проверить, работает ли ваш сценарий оболочки. Я думаю, что значения параметров @file.id и @filename могут быть nil, поэтому при интерполяции оно будет заменено на "". ставит свои значения также для проверки.

0 голосов
/ 03 марта 2011

Я не знаю, что означает `` в Ruby, но я думаю, что вы можете использовать системную функцию для вызова внешней программы.Что-то вроде

   @cmd = "/downafile.sh #{@directdown} #{@file.id} #{@filename}"
   system(@cmd)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...