Arrays Bash脚本:如果变量不是数组,${VARIABLE[number]}意味着什么?
我知道bash脚本中有数组。例如: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根本没有数
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
相同的内容,任何其他索引都会返回空字符串。