Như Thomas Dickey đã nói, bất kỳ vỏ POSIX nào (tức là khá nhiều trong số chúng) sẽ có $?
.
Câu hỏi này khiến tôi quan tâm khá nhiều, vì vậy tôi đã thử nó trên bất kỳ vỏ nào tôi có thể chạm tay vào:
mksh
zsh
/bin/sh
trên Samsung Galaxy S5 của tôi
/bin/sh
trên bộ định tuyến của tôi
tcsh
ksh
dash
/bin/sh
trên hệ thống UNIX ảo V của tôi từ năm 1989 trở đi
cmd.exe
và powershell.exe
trên máy tính Windows 10 của tôi
và $?
làm việc trong tất cả những điều này nhưng fish
và cmd.exe
.
Tìm thấy hai điều thú vị:
1. $?
hoạt động trong Windows PowerShell!
Vâng, đến một điểm. Thay vì trả về 0 hoặc số cao hơn, nó chỉ True
và 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. $?
không hoạt động trong vỏ fish
.
Tuy nhiên, khi bạn gõ $?
cá, bạn nhận được thông báo này:
~$ echo $?
$? is not the exit status. In fish, please use $status.
fish: echo $?
Tôi đã không sử dụng nó nhiều nhưng tôi không ngạc nhiên, fish
dường như có ngôn ngữ vỏ thú vị của riêng nó, hoàn toàn khác biệt bash
hoặc bất cứ điều gì.