Arrays Bash脚本:如果变量不是数组,${VARIABLE[number]}意味着什么?

Arrays Bash脚本:如果变量不是数组,${VARIABLE[number]}意味着什么?,arrays,bash,variables,expansion,Arrays,Bash,Variables,Expansion,我知道bash脚本中有数组。例如: JOBS=("JOB1", "JOB2", "JOB3") 然后,我们可以参考作业2,如下所示: ${JOBS[1]} ${JOB[0]} 在bash脚本中,我最近遇到了一个普通(非数组)变量: JOB="XYZ" 在脚本的后面部分,该变量的引用如下: ${JOBS[1]} ${JOB[0]} 以及: 由于JOB不是数组,我不理解${JOB[number]}被扩展成什么 这只是一个编程错误吗?或者我不知道是否有关于正态变量的构造?bash根本没有数

我知道bash脚本中有数组。例如:

JOBS=("JOB1", "JOB2", "JOB3")
然后,我们可以参考作业2,如下所示:

${JOBS[1]}
${JOB[0]}
在bash脚本中,我最近遇到了一个普通(非数组)变量:

JOB="XYZ"
在脚本的后面部分,该变量的引用如下:

${JOBS[1]}
${JOB[0]}
以及:

由于JOB不是数组,我不理解${JOB[number]}被扩展成什么


这只是一个编程错误吗?或者我不知道是否有关于正态变量的构造?

bash
根本没有数组值;它提供了用于具有
数组
属性集的名称的数组语法:

$ a=()
$ declare -p a
declare -a a=()
输出中的
-a
表示
array
属性设置在
a
上,已通过前面的数组赋值隐式设置


对于这些变量,name plus索引充当一种“虚拟”名称,并且与任何其他名称一样,如果名称实际上不存在,则扩展为空字符串,如
${JOB[1]}
的情况。实现的一个副作用是
$foo
${foo[0]}
通常是等价的,不管
foo
是否设置了数组属性。

bash
根本没有数组值;它提供了用于具有
数组
属性集的名称的数组语法:

$ a=()
$ declare -p a
declare -a a=()
输出中的
-a
表示
array
属性设置在
a
上,已通过前面的数组赋值隐式设置


对于这些变量,name plus索引充当一种“虚拟”名称,并且与任何其他名称一样,如果名称实际上不存在,则扩展为空字符串,如
${JOB[1]}
的情况。实现的一个副作用是
$foo
${foo[0]}
通常是等效的,无论
foo
是否设置了数组属性。

我相信较新版本的Bash支持一维数组,语法可以在以下链接中看到:


如果Variable不是数组,${Variable[Number]}将只对Number=0有效,而对任何其他数字无效,因为${Variable[0]}和$Variable都是相同的。

我相信较新版本的Bash支持一维数组,语法可以在以下链接中看到:


如果Variable不是数组,${Variable[Number]}将只对Number=0有效,而对任何其他数字无效,因为${Variable[0]}和$Variable都是相同的。

如果看不到整个脚本,很难判断,但听起来像是个错误。编写
${JOB[0]}
只会返回与
$JOB
相同的内容,任何其他索引都会返回一个空字符串。如果看不到整个脚本,很难判断,但听起来像是个错误。写入
${JOB[0]}
只会返回与
$JOB
相同的内容,任何其他索引都会返回空字符串。