2011-10-19 25 views
17

yılında komutu ters tırnak kullanarak yürütülen bir komutun dönüş değeri alma? Böyle bir şey:ben bash aşağıdakileri yapabilirsiniz Perl

$output=`command` 
$retcode=??? 
+1

Denediğinde ne oldu? :-) Cidden, böyle bir şeyi denemek, burada bir soru sormaktan çok daha hızlı olacak. –

cevap

21

Sen (kabuk gibi) $? değişkeni okuyabilir.

$?  The status returned by the last pipe close, backtick ("``") command, successful call to wait() or waitpid(), or from the 
       system() operator. This is just the 16-bit status word returned by the traditional Unix wait() system call (or else is made up 
       to look like it). Thus, the exit value of the subprocess is really ("$? >> 8"), and "$? & 127" gives which signal, if any, the 
       process died from, and "$? & 128" reports whether there was a core dump. (Mnemonic: similar to sh and ksh.) 

       Additionally, if the "h_errno" variable is supported in C, its value is returned via $? if any "gethost*()" function fails. 

       If you have installed a signal handler for "SIGCHLD", the value of $? will usually be wrong outside that handler. 

       Inside an "END" subroutine $? contains the value that is going to be given to "exit()". You can modify $? in an "END" 
       subroutine to change the exit status of your program. For example: 

        END { 
         $? = 1 if $? == 255; # die would make it 255 
        } 

       Under VMS, the pragma "use vmsish 'status'" makes $? reflect the actual VMS exit status, instead of the default emulation of 
       POSIX status; see "$?" in perlvms for details. 

       Also see "Error Indicators". 
0

Ve Perl 5.10 beri man perlvar bölümünden ayrıca ${^CHILD_ERROR_NATIVE} var. http://perldoc.perl.org/perl5100delta.html#New-internal-variables itibaren

:

${^CHILD_ERROR_NATIVE}

Bu değişken geçen boru yakın tarafından döndürülen yerli statü verir, ters tırnak komut başarılı çağrı() veya waitpid() bekleyin veya ila sistem yöneticisi. Detaylar için perlvar'a bakınız.

İlgili konular