获取key
和长度
获取是被使用过的; 没有使用过的则不会输出;
数组对应使用过的下标; map
则对应keys
;
注: 数组就是特殊的map
;比如长度的获取和key
的获取, 结果和map
一模一样;
数组
idx=1
AAA[idx++]=1
AAA[idx++]=1
AAA[idx++]=1
AAA[idx++]=1
AAA[idx++]=
idx=10
AAA[idx++]=1
AAA[idx++]=1
AAA[idx++]=1
AAA[idx++]=
echo ${!AAA[@]}
"
$ ./test.sh
1 2 3 4 5 10 11 12 13
"
可以看到数组使用过的才输出;
集合
declare -A maps=([hello]=world [good]=job)
echo ${!maps[@]}
"
$ ./test.sh
hello good
"
普通变量0
或未定义变量null
echo ":${!PATH[@]}:${!NOT_EXIST[@]}:"
"
$ ./test.sh
:0::
"
长度: 元素个数数量, 字符串长度或数组长度
元素个数
idx=1
AAA[idx++]=1
AAA[idx++]=1
AAA[idx++]=1
AAA[idx++]=
idx=10
AAA[idx++]=1
AAA[idx++]=1
AAA[idx++]=1
AAA[idx++]=
echo ${#AAA[@]}
"
$ ./test.sh
8
"
元素个数和字符串长度
AAA[0]="hello world"
echo ${#AAA[@]}:${#AAA[0]}
"
$ ./test.sh
1:11
"