是否有一个与$等价的命名方法?在Ruby中?



在Ruby中,我希望访问最近执行的外部命令的结果信息的状态,即$?提供的信息,但更希望使用命名方法或变量。是否存在这样的东西,如果存在,我如何访问它?

Process.last_status返回与$?:

相同的Process::Status实例
$ irb
> `ls 12341234`
ls: 12341234: No such file or directory
=> ""
> $? == Process.last_status
=> true
> $?.equal? Process.last_status
=> true
> $?.class
=> Process::Status

线程本地

另外,这个变量是线程局部的,所以每个线程都有自己的变量(即线程不会覆盖单个全局值)。从https://ruby-doc.org/core-2.5.0/Process.html#method-c-lastrongtatus:

"返回当前线程中最后执行的子进程的状态。">

更倾向于使用已命名的[…]变量

English标准库为$?和其他特殊的全局变量提供了描述性别名。但与Process.last_status不同的是,这个库是在它的任何别名可以使用之前加载的。好处是它存在于Ruby <2.5 .

$ irb -rEnglish
> `ls 12341234`
ls: 12341234: No such file or directory
=> ""
> $? == CHILD_STATUS
=> true
> $?.equal? CHILD_STATUS
=> true
> $?.class
=> Process::Status

最新更新