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

时间:2012-05-02 19:16:07

标签: 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库进行交互,我试图将相同的理念用于自动化,而不必考虑它。

2 个答案:

答案 0 :(得分:2)

您可以将此处的文档传递给irb

irb <<SCRIPT
  four = 2 + 2
  puts four
SCRIPT

但是,我不认为这会完成你想要做的事情。这是输出:

Switch to inspect mode.
  four = 2 + 2
4
  puts four
4
nil

类似于bash -x。为什么不简单地使用普通的ruby呢?

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

如果您不打算与进行交互,则无需生成交互式 shell。

答案 1 :(得分:0)

我想你想要解释的答案 fork and exec in bash 基本上:

function_to_fork(){    IRB }

function_to_fork&amp;

如果您希望在那里进行某些交互以影响父进程或父进程等待,那么

可能不起作用。

我在下面的评论格式不是很好:

通过以下程序,我能够实现:

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

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