2016-08-23 4 views
1

Ich schrieb einige Skripte und streichelte mich plötzlich, um die folgenden Befehle in CSH und BASH-Shells zu denken.Verhalten von 'ECHO' in Csh und Bash

In csh Shell

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

In Bash-Shell

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

Jemand das oben beschriebene Verhalten erklären. Ich kenne die Echo $? druckt den Exit-Status des letzten Befehls, aber wenn mit einem String hinzugefügt, wie funktioniert es dann?

+2

http://stackoverflow.com/questions/16975968/what-does-var-mean-in-csh. Ich wusste es auch nicht, also suchte ich es und fand das in ungefähr 20 Sekunden. – 123

Antwort

3

Wenn Sie in der Dokumentation csh zeigt:

$?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

vorsichtig sein, $? ist anders als $? name

+0

Danke! Und was ist mit BASH? –

+0

Da '? BASH' kein gültiger Parametername ist, weiß der' bash' Parser, dass '$? BASH' aus zwei Teilen besteht: der Parametererweiterung' $? 'Und der literalen Zeichenkette' BASH'. – chepner