Shell脚本变量 - 找不到命令

CJ.*_*CJ. 49 variables bash shell cygwin

我有一个shell脚本,可以让我访问脚本中的全局变量,但是当我尝试创建自己的变量时,它会响应:找不到命令.

#!/bin/bash
J = 4
FACE_NAME = "eig$J.face"
USER_DB_NAME = "base$J.user"
Run Code Online (Sandbox Code Playgroud)

当我运行上面的脚本时,我得到:

./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
Run Code Online (Sandbox Code Playgroud)

有任何想法吗??我在Windows XP下使用Cygwin.

And*_*are 116

试试这个(注意我已经删除了两侧的空格=):

#!/bin/bash
J="4"
FACE_NAME="eig$J.face"
USER_DB_NAME="base$J.user"
Run Code Online (Sandbox Code Playgroud)

当你声明变量时,Bash不喜欢空格 - 最好是引用每个值(但这不是必需的).

  • 哦,伙计,这太令人沮丧了.那是我的问题.谢谢! (17认同)
  • 我真的不明白为什么bash不接受空间:( (3认同)

Pau*_*ce. 11

在其他文本中嵌入变量时,使用大括号分隔变量名称是个好主意:

#!/bin/bash
J=4
FACE_NAME="eig${J}.face"
USER_DB_NAME="base${J}.user"
Run Code Online (Sandbox Code Playgroud)

点在这里为你完成工作,但如果那里有其他一些字符,它可能被解释为变量名称的一部分.

  • 使用 {} 在文本中间分隔变量是 shell 编程的最佳实践。 (2认同)

gho*_*g74 7

不要在"="之间留空格

J=4
FACE_NAME="eig${J}.face"
USER_DB_NAME="base${J}.user"
Run Code Online (Sandbox Code Playgroud)