【问题标题】:How is the exit command properly executed in Ruby?在 Ruby 中如何正确执行 exit 命令?
【发布时间】:2014-11-19 17:33:50
【问题描述】:

我一直在尝试创建一个 Ruby gem,只要输入“x”,它就会简单地退出我的终端。这是我的主要项目文件:

module SwissKnife
  VERSION = '0.0.1'

  class ConsoleUtility
    def exit
      `exit`
    end
  end
end

和我的可执行文件:

#!/usr/bin/env ruby

require 'swissknife'

util = SwissKnife::ConsoleUtility.new
util.exit

由于某种原因,每当我运行它时,似乎什么都没有发生。我通过在其中添加一个简单的puts 'Hello World!' 来调试它,它会打印“Hello World!”但不退出。我究竟做错了什么?非常感谢任何帮助!

【问题讨论】:

    标签: ruby console gem executable


    【解决方案1】:
    1. 反引号在新的 shell 中执行代码
    2. exit 不是你的 shell 运行的可执行文件,它是你的 shell 理解的特殊命令 - 告诉它退出

    所以当你这样做时

    `exit`
    

    它启动一个立即退出的shell。不是很有用。要退出 shell,您可以改为终止 Ruby 的父进程。

    Process.kill 'HUP', Process.ppid
    

    【讨论】:

    • 我认为没有办法向运行 Ruby 的 shell 发送命令,但可以终止 shell 进程。查看我的编辑。
    猜你喜欢
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 2015-05-18
    • 2022-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多