如何测试是否在Bash中声明了关联数组?我可以测试一个变量,如:
[ -z $FOO ] && echo nope
Run Code Online (Sandbox Code Playgroud)
但我似乎不适用于关联数组:
$unset FOO
$declare -A FOO
$[ -z $FOO ] && echo nope
nope
$FOO=([1]=foo)
$ [ -z $FOO ] && echo nope
nope
$ echo ${FOO[@]}
foo
Run Code Online (Sandbox Code Playgroud)
编辑:
谢谢你的答案,两者似乎都有效,所以我让速度决定:
$ cat test1.sh
#!/bin/bash
for i in {1..100000}; do
size=${#array[@]}
[ "$size" -lt 1 ] && :
done
$ time bash test1.sh #best of five
real 0m1.377s
user 0m1.357s
sys 0m0.020s
Run Code Online (Sandbox Code Playgroud)
和另外一个:
$ cat test2.sh
#!/bin/bash
for i in {1..100000}; do
declare …
Run Code Online (Sandbox Code Playgroud)