2016-08-17 7 views
0

den folgenden Code:Die Funktionsdefinitionen in der Schale Verwendung dash

#!/bin/bash 

function me-test() 
{ 
     echo 'test' 
} 

me-test 

Die Ausführungsmethode ist unten nicht korrekt:

#sh 1.sh 
1.sh: line 6: `me-test': not a valid identifier 

aber die Ausführungsmethode ist unten richtig:

#./1.sh 
test 

In anderen Programmiersprachen kann der Befehl nicht verwendet werden, um die Funktion zu definieren. Zum Beispiel python.

warum Shell ist das so?

+1

Auch die 'Funktion'-Syntax ist nicht Standard und funktioniert möglicherweise nicht mit allen Posix-kompatiblen Shells. – rici

Antwort

0

sh 1.sh läuft das Skript als Bourne Shell Skript und ./1.sh läuft es als bash Skript wegen Ihrer Linie #!/bin/bash (dies einen shebang genannt wird, die die Schale, die Dolmetscher zu verwenden erzählt) ruft die Bash-Interpreter das Skript auszuführen. Bash erlaubt Bindestriche in Funktionsnamen, aber Bourne Shell nicht. Die beiden sind sehr ähnlich, aber verschiedene Programmiersprachen.

Wenn Sie #!/bin/bash zu #!/bin/sh geändert haben, erhalten Sie jedes Mal einen Fehler, wenn Sie das Programm ausführen.

+0

Ich weiß, ich will wissen, warum "bash" kann und "sh" kann nicht – baozailove

+1

^^ because sie sind anders. – anishsane

+0

@anishsane ist korrekt. – Mike

Verwandte Themen