如何从 ruby 的 shell 脚本调用函数
How to call function from shell script from ruby
如何从 ruby 调用 shell 脚本中的函数(最好使用 open3)
#!/bin/sh
# A simple script with a function...
function add()
{
echo "1"
}
Ruby 脚本不起作用--
#!/apollo/bin/env ruby
# -*- ruby -*-
require 'open3'
Open3.capture3('.\something.sh', 'add')
首先,你应该有一个valid bash function declaration。
假设 something.sh
更正为:
#!/bin/sh
# A simple script with a function...
bar () {
echo "1"
}
你必须加载它的内容到当前shell 和 执行函数在其中:
Open3.capture3(". ./something.sh && bar")
#⇒ ["1\n", "", #<Process::Status: pid 17113 exit 0>]
为了其他人发布答案的兴趣。基本上,我最终会像 -
#!/apollo/bin/env ruby
# -*- ruby -*-
require 'open3'
Open3.capture3(
'bash',
'-c',
"source something.sh && add")
基本上 Open3(由于 Ruby)在不同的会话中触发每个命令,因此脚本和方法调用的源应该在一次调用中完成。
如何从 ruby 调用 shell 脚本中的函数(最好使用 open3)
#!/bin/sh
# A simple script with a function...
function add()
{
echo "1"
}
Ruby 脚本不起作用--
#!/apollo/bin/env ruby
# -*- ruby -*-
require 'open3'
Open3.capture3('.\something.sh', 'add')
首先,你应该有一个valid bash function declaration。
假设 something.sh
更正为:
#!/bin/sh
# A simple script with a function...
bar () {
echo "1"
}
你必须加载它的内容到当前shell 和 执行函数在其中:
Open3.capture3(". ./something.sh && bar")
#⇒ ["1\n", "", #<Process::Status: pid 17113 exit 0>]
为了其他人发布答案的兴趣。基本上,我最终会像 -
#!/apollo/bin/env ruby
# -*- ruby -*-
require 'open3'
Open3.capture3(
'bash',
'-c',
"source something.sh && add")
基本上 Open3(由于 Ruby)在不同的会话中触发每个命令,因此脚本和方法调用的源应该在一次调用中完成。