web-dev-qa-db-ja.com

Bash変数の割り当てとコマンドが見つかりません

スクリプト内のグローバル変数にアクセスできるシェルスクリプトがありますが、独自のスクリプトを作成しようとすると、コマンドが見つかりませんで応答します。

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

上記のスクリプトを実行すると、次の結果が得られます。

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

何か案は?? Windows XPでCygwinを使用しています。

49
CJ.

これを試してください(=の両側からスペースを削除したことに注意してください):

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

Bashは変数を宣言するときにスペースを好みません-また、すべての値を引用符で囲むのが最適です(ただし、これは必須ではありません)。

114
Andrew Hare

変数を他のテキストに埋め込む場合は、中括弧を使用して変数名を区切ることをお勧めします。

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

ドットはここで機能しますが、そこに他の文字がある場合、変数名の一部として解釈される可能性があります。

11

「=」の間にスペースを入れないでください

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