En Ruby, me gustaría acceder al estado de la información de resultados del comando externo ejecutado más recientemente, es decir, la información proporcionada por $? , pero preferiría un método o variable con nombre. ¿Existe tal cosa y, de ser así, cómo puedo acceder a ella?
Process.last_status devuelve la misma instancia de Process::Status que $? :
$ irb > `ls 12341234` ls: 12341234: No such file or directory => "" > $? == Process.last_status => true > $?.equal? Process.last_status => true > $?.class => Process::StatusSubproceso local
Además, esta variable es un subproceso local, por lo que cada subproceso tendrá su propia variable (es decir, los subprocesos no sobrescribirán un único valor global). De los documentos en https://ruby-doc.org/core-2.5.0/Process.html#method-c-last_status :
"Devuelve el estado del último proceso secundario ejecutado en el subproceso actual".
preferiría una variable con nombre […].
La biblioteca estándar en English proporciona alias descriptivos para $? y otras variables globales especiales. Pero a diferencia de Process.last_status , esta biblioteca se ha cargado antes de que se pueda usar cualquiera de sus alias. La ventaja es que existe en Ruby <2.5.
$ irb -rEnglish > `ls 12341234` ls: 12341234: No such file or directory => "" > $? == CHILD_STATUS => true > $?.equal? CHILD_STATUS => true > $?.class => Process::Status