Как создать сценарий оболочки и выполнить его функции в ruby - PullRequest
0 голосов
/ 06 декабря 2018

Я новичок в рубине.Я пытаюсь получить исходный текст своего сценария оболочки в ruby ​​и выполнить функции в исходном сценарии оболочки.

ниже приведен сценарий моей оболочки /tmp/test.sh

#!/bin/bash


function hello {

        echo "hello, this script is being called from ruby"
}

ниже мой скрипт ruby ​​ test.rb

#!/usr/bin/ruby

system("source /tmp/test.sh")
puts $?.exitstatus

system("hello")
puts $?.exitstatus

вывод с использованием system

[root@localhost ~]# ruby test.rb
127
127

Я даже попробовал метод обратного тика, ноя получил ниже ошибка

код:

#!/usr/bin/ruby

status=`source /root/test.sh`
puts status

status2=`hello`
puts status2

ошибка:

ruby  test.rb
test.rb:3:in ``': No such file or directory - source (Errno::ENOENT)
        from test.rb:3:in `<main>'

может кто-нибудь сказать, что не такв моем коде.

1 Ответ

0 голосов
/ 06 декабря 2018

Вы можете использовать сеанс гем или написать решение самостоятельно.

script.sh:

#!/bin/bash

function hello() {
    echo "Hello, World!"
}

Файл Ruby:

IO.popen('bash', 'r+') do |sh|
  sh.puts 'source script.sh'
  sh.puts 'hello'
  sh.close_write
  puts sh.gets
end

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