如何在bash脚本中获取ruby函数

lskq00tm  于 2023-05-06  发布在  Ruby
关注(0)|答案(2)|浏览(91)

在bash中,如果我有两个脚本,一个带有函数,另一个使用第一个脚本作为源,那么我可以在第二个脚本中访问函数。我可以用ruby做类似的事情吗?
我可以这样做:
test1.sh

doThing() {
    echo "Doing Thing"
}

test2.sh

source ./test1.sh
doThing

有没有一种方法可以用ruby做类似的事情?以下失败。
test1.rb

def doThing
    puts "Doing Thing"
end

test2.sh

source ./test1.rb
doThing

谢谢

fafcakar

fafcakar1#

快速的回答是“不”,但是你可以从bash调用ruby程序,就像你可以调用任何其他可执行文件一样:

  • 创建一个ruby程序,它接受参数并根据这些参数调用所需的函数。
  • 创建一个bash脚本,它定义了一堆函数,每个函数都使用适当的参数调用你的ruby程序,使它调用自己的函数。
  • 将函数的bash脚本源化到主bash脚本中。
  • 从源脚本调用bash函数。
gmol1639

gmol16392#

你不需要source Ruby,你只需要ruby Ruby,或者更好的是,添加一个shell“hashbang”:

#!/usr/bin/env ruby

# ... Your Ruby Code

然后使该脚本可执行。从那里开始,它就像./test.rb一样简单。
您需要能够通过ENV转发参数(如export MY_VAR=...),或者作为命令行参数转发参数(如--my-var=...通过OptionParser)。
如果你正在使用Ruby,值得记住的是Ruby比shell脚本更强大,所以你可能想颠倒一下:让Ruby驱动某些shell命令,例如system,而不是shell驱动Ruby。

相关问题