2009-11-11 9 views
36

Ich habe ein Shell-Skript, mit dem ich auf globale Variablen im Skript zugreifen kann, aber wenn ich versuche, ein eigenes Skript zu erstellen, antwortet es mit: Befehl nicht gefunden.Shell-Skript-Variablen - Befehl nicht gefunden

#!/bin/bash 
J = 4 
FACE_NAME = "eig$J.face" 
USER_DB_NAME = "base$J.user" 

Als ich das Skript ausführen ich:

./test1.sh line 2: J: command not found 
./test1.sh line 3: FACE_NAME: command not found 
./test1.sh line 4: USER_DB_NAME: command not found 

Irgendwelche Ideen ?? Ich benutze Cygwin unter Windows XP.

+1

Verwenden Sie nicht alle CAPS in Ihren Variablennamen, wenn Sie Variablen erstellen. Per Konvention werden Umgebungsvariablen (PATH, EDITOR, SHELL, ...) und interne Shell-Variablen (BASH_VERSION, RANDOM, ...) vollständig groß geschrieben. Alle anderen Variablennamen sollten Kleinbuchstaben sein. Da bei Variablennamen zwischen Groß- und Kleinschreibung unterschieden wird, vermeidet diese Konvention versehentlich das Überschreiben von Umgebungs- und internen Variablen. – BullShark

Antwort

91

Versuchen Sie, diese (bemerke ich die Räume von beiden Seiten des = entfernt):

#!/bin/bash 
J="4" 
FACE_NAME="eig$J.face" 
USER_DB_NAME="base$J.user" 

Bash keine Leerzeichen wie wenn Sie Variablen deklarieren - auch ist es am besten zitiert jeden Wert zu machen (aber Dies ist nicht so wichtig).

+15

Oh Mann, das ist so deprimierend. Das war mein Problem. Vielen Dank! –

+0

Danke Andrew Hare. Hatte gerade das gleiche deprimierende Problem! –

+2

Ich verstehe wirklich nicht, warum Bash nicht Platz akzeptiert :( –

5

nicht‘verlassen Leerzeichen zwischen‚=‘

J=4 
FACE_NAME="eig${J}.face" 
USER_DB_NAME="base${J}.user" 
11

Es ist eine gute Idee Klammern zu verwenden, um die Variablennamen zu trennen, wenn Sie eine Variable in anderem Text einbetten:

#!/bin/bash 
J=4 
FACE_NAME="eig${J}.face" 
USER_DB_NAME="base${J}.user" 

Der Punkt erledigt den Job hier für Sie, aber wenn dort ein anderes Zeichen war, könnte es als Teil des Variablennamens interpretiert werden.

+1

Verwenden von {}, um Variablen in der Mitte des Textes zu begrenzen, ist eine bewährte Methode für Shell-Programmierung. –

+0

This war mein Problem, die erste Lösung funktionierte nicht für mich, aber das war es. –