我知道bash脚本中有数组。例如:
JOBS=("JOB1", "JOB2", "JOB3")
然后可以这样说,例如,JOB2:
${JOBS[1]}
在bash脚本中,我最近遇到了一个普通的(非数组)变量:
JOB="XYZ"
在脚本的后面,此变量的含义如下:
${JOB[0]}
和:
${JOB[1]}
由于JOB不是数组,所以我不明白$ {JOB [number]}会扩展成什么。
这仅仅是编程错误吗?还是有一些我不知道的关于正常变量的构造?
答案 0 :(得分:3)
bash
根本没有数组值;它提供了数组 syntax ,可用于设置了array
属性的名称:
$ a=()
$ declare -p a
declare -a a=()
输出中的-a
表示array
属性是在a
上设置的,它是由前面的数组分配隐式设置的。
对于此类变量,name-plus-index充当一种“虚拟”名称,并且与任何其他名称一样,如果该名称实际上不存在,则扩展为空字符串,例如{{ 1}}。该实现的副作用是${JOB[1]}
和$foo
通常等效,无论${foo[0]}
是否设置了数组属性。
答案 1 :(得分:0)
我相信Bash的较新版本支持一维数组,并且可以在以下链接中看到以下语法: Advanced Bash-Scripting Guide
如果Variable不是数组,则$ {Variable [Number]}仅适用于Number = 0,而不适用于$ {Variable [0]}和$ Variable的任何其他数字-两者相同。