Bash脚本:如果VARIABLE不是数组,${VARIABLE[number]}是什么意思



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

JOBS=("JOB1", "JOB2", "JOB3")

那么,可以将JOB2称为:

${JOBS[1]}

在bash脚本中,我最近遇到了一个普通(非数组(变量:

JOB="XYZ"

在脚本的后面,这个变量被称为:

${JOB[0]}

和:

${JOB[1]}

由于JOB不是一个数组,我不明白${JOB[number]}扩展到了什么。

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

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

$ a=()
$ declare -p a
declare -a a=()

输出中的-a表示在a上设置了array属性,该属性已由前面的数组赋值隐式设置。

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

我相信更新版本的Bash支持一维数组,语法可以在以下链接中看到:高级Bash脚本指南

如果Variable不是数组,则${Variable[Number]}将仅适用于Number=0,但不适用于任何其他数字,因为${Variable[0]}和$Variable都是相同的。

相关内容

最新更新