Wie Thomas Dickey sagte, wird jede POSIX-Shell (dh so ziemlich alle) haben $?.
Diese Frage hat mich sehr interessiert, deshalb habe ich sie an jeder Shell getestet, die ich in die Hände bekommen konnte:
mksh
zsh
/bin/sh auf meinem Samsung Galaxy S5
/bin/sh auf meinem Router
tcsh
ksh
dash
/bin/sh auf meinem virtuellen UNIX System V von 1989 oder so
cmd.exeund powershell.exeauf meinem Windows 10 Computer
und $?arbeitete in all diesen aber fishund cmd.exe.
Zwei interessante Dinge gefunden:
1. $?funktioniert in Windows PowerShell!
Nun, bis zu einem gewissen Punkt. Anstatt 0 oder eine höhere Zahl zurückzugeben, ist es nur Trueund 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. $?funktioniert nicht in der Shell fish.
Wenn Sie jedoch $?Fisch eingeben, wird folgende Meldung angezeigt:
~$ echo $?
$? is not the exit status. In fish, please use $status.
fish: echo $?
Ich habe es nicht viel benutzt, aber ich bin nicht überrascht, fishscheint eine eigene interessante Shell-Sprache zu haben, ganz anders als bashoder was auch immer.