Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bash variable assignment and command not found [duplicate]

I have a shell script that will let me access global variables inside the script, but when I try to create my own, it responds with: command not found.

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

When I run the above script I get:

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

Any ideas?? I'm using Cygwin under Windows XP.

like image 741
CJ. Avatar asked Nov 11 '09 11:11

CJ.


2 Answers

Try this (notice I have removed the spaces from either side of the =):

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

Bash doesn't like spaces when you declare variables - also it is best to make every value quoted (but this isn't as essential).

like image 161
Andrew Hare Avatar answered Oct 23 '22 06:10

Andrew Hare


It's a good idea to use braces to separate the variable name when you are embedding a variable in other text:

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

The dot does the job here for you but if there was some other character there, it might be interpreted as part of the variable name.

like image 27
Dennis Williamson Avatar answered Oct 23 '22 06:10

Dennis Williamson