2016-08-23 7 views
1

Я писал несколько скриптов и внезапно погладил меня, чтобы подумать о следующих командах в оболочках CSH и BASH.Поведение «ECHO» в csh и bash

В CSH оболочки

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

В Баш оболочки

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

Кто-то объяснить описанное выше поведение. Я знаю echo $? печатает статус выхода последней команды, но если добавлено с некоторой строкой, то как она работает?

+2

http://stackoverflow.com/questions/16975968/what-does-var-mean-in-csh. Я также не знал, поэтому я обыскал его и обнаружил, что примерно через 20 секунд. – 123

ответ

3

Если просмотреть документацию 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

быть осторожным, $? отличается от $?

+0

Спасибо! А как насчет в BASH? –

+0

Поскольку '? BASH' не является допустимым именем параметра, парсер' bash' знает, что '$? BASH' состоит из двух частей: расширение параметра' $? 'И буквальная строка' BASH'. – chepner