2009-11-11 21 views
36

Tengo un script de shell que me permitirá acceder a variables globales dentro del script, pero cuando intento crear el mío, responde con: comando no encontrado.Variables de script de Shell: comando no encontrado

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

Cuando ejecuto el script de arriba me sale:

./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 

Alguna idea ?? Estoy usando Cygwin en Windows XP.

+1

No use todos los CAPS en sus nombres de variable al crear variables. Por convención, las variables de entorno (PATH, EDITOR, SHELL, ...) y las variables de shell internas (BASH_VERSION, RANDOM, ...) están completamente en mayúscula. Todos los demás nombres de variables deben ser en minúscula. Dado que los nombres de las variables distinguen entre mayúsculas y minúsculas, esta convención evita accidentalmente anulando variables ambientales y internas. – BullShark

Respuesta

91

Prueba esto (nótese que he eliminado los espacios de ambos lados de la =):

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

Bash no le gustan los espacios cuando se declara variables - También es mejor para hacer que cada valor dado es (pero esto no es tan esencial).

+15

Oh hombre, eso es muy deprimente. Ese fue mi problema ¡Gracias! –

+0

Gracias Andrew Hare. ¡Solo tuve el mismo problema deprimente! –

+2

Realmente no entiendo por qué bash no acepta espacio :( –

5

'no dejar espacios entre '='

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

Es una buena idea usar los frenos para separar el nombre de la variable cuando está incrustando una variable en otro texto:

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

El punto hace el trabajo aquí para usted, pero si hubiera algún otro personaje allí, podría interpretarse como parte del nombre de la variable.

+1

Usar {} para delimitar variables en el medio del texto es una mejor práctica para la programación de shell. –

+0

This ¡fue mi problema! La primera solución no funcionó para mí, pero esto fue así. –