Як сказав Томас Дікі, будь-яка оболонка POSIX (тобто майже всі вони) матиме $?
.
Це питання мене трохи зацікавило, тому я перевірив його на будь-якій оболонці, на яку я міг би отримати свої руки:
mksh
zsh
/bin/sh
на моєму Samsung Galaxy S5
/bin/sh
на моєму маршрутизаторі
tcsh
ksh
dash
/bin/sh
на моїй віртуальній системі UNIX V від 1989 року
cmd.exe
і powershell.exe
на моєму комп'ютері Windows 10
і $?
працював у всіх цих, але fish
і cmd.exe
.
Знайшли дві цікаві речі:
1. $?
працює в Windows PowerShell!
Ну, до певного моменту. Замість того, щоб повернути 0 або більше число, це просто True
і 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. $?
не працює в оболонці fish
.
Однак, набираючи $?
рибу, ви отримуєте це повідомлення:
~$ echo $?
$? is not the exit status. In fish, please use $status.
fish: echo $?
Я не дуже його використовував, але я не здивований, fish
здається, має свою цікаву мову оболонки, зовсім іншу від bash
будь-якої іншої .