Ruby 从Shell脚本中输入和退出子流程

Ruby 从Shell脚本中输入和退出子流程,ruby,bash,shell,Ruby,Bash,Shell,我试图从shell脚本中输入irb,执行一些操作,然后返回shell脚本 我该怎么做 #!/bin/bash #example_app # Some shell instructions here irb four = 2 + 2 exit echo "This text is not reached and the process hangs open" 注意:我不应该试图加载irb来输入静态代码,我同意你们的观点。我没有想到我在做什么。我当时正在与AWS图书馆互动,我试图将同样的理念带入

我试图从shell脚本中输入
irb
,执行一些操作,然后返回shell脚本

我该怎么做

#!/bin/bash
#example_app

# Some shell instructions here
irb
four = 2 + 2
exit
echo "This text is not reached and the process hangs open"

注意:我不应该试图加载irb来输入静态代码,我同意你们的观点。我没有想到我在做什么。我当时正在与AWS图书馆互动,我试图将同样的理念带入自动化,而不必三思而后行

我想你想让我解释一下答案 基本上:

函数_to _fork(){ 内部评级 }

函数_到_fork&

如果希望那里的某些交互影响父进程或让父进程等待,则这可能不起作用

我下面的评论格式不太好:


通过以下计划,我得以实现:

#!/bin/bash
# irbb.sh
irb
echo "here"

$ ./irbb.sh 
>> four = 2 + 2
=> 4
>> exit
here

您可以将此处文档传递到
irb

irb <<SCRIPT
  four = 2 + 2
  puts four
SCRIPT
它类似于。为什么不简单地使用普通的旧的
ruby

ruby <<SCRIPT
  four = 2 + 2
  puts four
SCRIPT
4

ruby您是在寻找类似
eval
的东西,还是真的需要一个新的流程?我不确定您在问什么。根据判断,您可能正在寻找类似的东西。如果我手动输入
irb
,我正在尝试从一个shell脚本执行一系列ruby命令,该脚本可以在ruby控制台上完美运行。我需要的一个极其简单的解释是[一个shell脚本,它可以输入irb,做一些事情,然后返回shell脚本到
echo
“完成!”]为什么必须在
irb
中执行它?它应该是互动的。为什么不直接运行ruby呢
ruby
ruby还有一个-e选项,如果代码只有几行,你也可以在bash shell中使用'ruby-e'four=2+2'-e'puts four',我认为这根本不能回答问题。OP本质上是想在另一个shell中运行一些命令,然后按顺序返回他的脚本,而不是并行返回。进程不像以前那样挂起打开,但是fork之后的shell命令没有得到执行,并且fork中的代码似乎没有得到执行。(实际的ruby代码涉及到文件存储。我已经手动测试了它,它可以工作。这就是我如何将它隔离到这个shell脚本中的方法。)通过以下程序,我能够实现:#/bin/bash#irbb.sh irb echo“here”$。/irbb.sh>>four=2+2=>4>>退出here@Ecuageo把它贴在你的答案上。他不想手工输入,他想要的是自动输入。
ruby <<SCRIPT
  four = 2 + 2
  puts four
SCRIPT
4