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