Como Thomas Dickey disse, qualquer shell POSIX (ou seja, praticamente todos eles) terá $?
.
Essa pergunta me interessou bastante, então eu a testei em qualquer shell em que pudesse colocar minhas mãos:
mksh
zsh
/bin/sh
no meu Samsung Galaxy S5
/bin/sh
no meu roteador
tcsh
ksh
dash
/bin/sh
no meu sistema UNIX virtual V de 1989 ou mais
cmd.exe
e powershell.exe
no meu computador com Windows 10
e $?
trabalhou em todos estes, mas fish
e cmd.exe
.
Encontrou duas coisas interessantes:
1. $?
funciona no Windows PowerShell!
Bem, até certo ponto. Em vez de retornar 0 ou um número maior, é apenas True
e False
.
PS C:\WINDOWS\system32> echo $?
True
PS C:\WINDOWS\system32> gfdhgfhfdgfdg
gfdhgfhfdgfdg : The term 'gfdhgfhfdgfdg' is not recognized as the name of a cmdlet, ...(big long error output).....
PS C:\WINDOWS\system32> echo $?
False
2. $?
não funciona no shell fish
.
No entanto, quando você digita $?
peixe, você recebe esta mensagem:
~$ echo $?
$? is not the exit status. In fish, please use $status.
fish: echo $?
Não usei muito, mas não estou surpreso, fish
parece ter sua própria linguagem shell interessante, completamente diferente bash
ou o que seja.