'ECHO' 在 csh 和 bash 中的行为

Behaviour of 'ECHO' in csh and bash

我正在写一些脚本,突然让我想到 CSH 和 BASH shells 中的以下命令。

在csh中shell

$ echo $?BASH
  0
$ echo $?HOME
  1
$ echo $? home
  0 home

在bashshell

$ echo $?BASH
  0BASH
$ echo $?HOME
  0HOME
$ echo $? home
  0 home

有人解释了上述行为。我知道 echo $? 打印最后一个命令的退出状态,但是如果添加了一些字符串那么它是如何工作的?

如果您查看文档 csh 表明:

$?name 
${?name} 
Substitutes the string 1 if the variable name is set, 0 if it is not.

$?0 
Substitutes 1 if the current input file name is known, 0 if it is not.

http://www.mkssoftware.com/docs/man1/csh.1.asp

小心,$?不同于 $?name