Seperti yang dikatakan Thomas Dickey, semua shell POSIX (mis., Hampir semuanya) akan memilikinya $?.
Pertanyaan ini cukup menarik bagi saya, jadi saya mengujinya pada shell apa pun yang bisa saya dapatkan:
mksh
zsh
/bin/sh pada Samsung Galaxy S5 saya
/bin/sh di router saya
tcsh
ksh
dash
/bin/sh pada Sistem V UNIX virtual saya dari tahun 1989 atau lebih
cmd.exedan powershell.exedi komputer Windows 10 saya
dan $?bekerja di semua ini tetapi fishdan cmd.exe.
Ditemukan dua hal menarik:
1. $?berfungsi di Windows PowerShell!
Ya, to the point. Alih-alih mengembalikan 0 atau angka yang lebih tinggi, itu hanya Truedan 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. $?tidak bekerja di shell fish.
Namun, saat Anda mengetikkan $?ikan, Anda mendapatkan pesan ini:
~$ echo $?
$? is not the exit status. In fish, please use $status.
fish: echo $?
Saya belum sering menggunakannya tetapi saya tidak terkejut, fishsepertinya memiliki bahasa shell yang menarik, sangat berbeda dari bashatau apa pun.