web-dev-qa-db-fra.com

Affectation et commande de variable Bash introuvables

J'ai un script Shell qui me permettra d'accéder aux variables globales à l'intérieur du script, mais lorsque j'essaie de créer le mien, il répond avec: commande introuvable.

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

Lorsque j'exécute le script ci-dessus, j'obtiens:

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

Des idées?? J'utilise Cygwin sous Windows XP.

49
CJ.

Essayez ceci (notez que j'ai supprimé les espaces de chaque côté du =):

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

Bash n'aime pas les espaces lorsque vous déclarez des variables - il est également préférable de faire chaque valeur citée (mais ce n'est pas aussi essentiel).

114
Andrew Hare

C'est une bonne idée d'utiliser des accolades pour séparer le nom de la variable lorsque vous incorporez une variable dans un autre texte:

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

Le point fait le travail ici pour vous mais s'il y avait un autre caractère, il pourrait être interprété comme faisant partie du nom de la variable.

11
Dennis Williamson

ne laissez pas d'espace entre "="

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