Comme l'a dit Thomas Dickey, n'importe quel shell POSIX (c'est-à-dire à peu près tous) en aura $?.
Cette question m'a beaucoup intéressé, alors je l'ai testé sur n'importe quel shell sur lequel je pouvais mettre la main:
mksh
zsh
/bin/sh sur mon Samsung Galaxy S5
/bin/sh sur mon routeur
tcsh
ksh
dash
/bin/sh sur mon système UNIX virtuel V de 1989 environ
cmd.exeet powershell.exesur mon ordinateur Windows 10
et a $?travaillé dans tous ces mais, fishet cmd.exe.
Trouvé deux choses intéressantes:
1. $?fonctionne dans Windows PowerShell!
Eh bien, jusqu'à un certain point. Au lieu de retourner 0 ou un nombre supérieur, c'est juste Trueet 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. $?ne fonctionne pas dans le shell fish.
Cependant, lorsque vous tapez $?du poisson, vous obtenez ce message:
~$ echo $?
$? is not the exit status. In fish, please use $status.
fish: echo $?
Je ne l'ai pas beaucoup utilisé mais je ne suis pas surpris, fishsemble avoir son propre langage shell intéressant, complètement différent bashou autre.