0

我试图irb从 shell 脚本进入,做一些事情,然后返回到 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 库进行交互,我试图将同样的理念带到自动化的过程中,而没有三思而后行。

4

2 回答 2

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 。

于 2012-05-02T19:52:47.053 回答
0

我认为你想从 bash 中的 fork 和 exec 中解释答案 :

function_to_fork() { irb }

function_to_fork &

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

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

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

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

$ ./irbb.sh 
>> four = 2 + 2
=> 4
>> exit
here
于 2012-05-02T19:26:48.953 回答