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.exe
und powershell.exe
auf meinem Windows 10 Computer
und $?
arbeitete in all diesen aber fish
und 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 True
und 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, fish
scheint eine eigene interessante Shell-Sprache zu haben, ganz anders als bash
oder was auch immer.