数组 – 创建bash数组是否需要-a标志?
发布时间:2020-12-15 21:36:14 所属栏目:安全 来源:网络整理
导读:使用-a标志声明bash数组的附加值是什么,如下所示: 与国旗 declare -a arr1arr1[0]="array1-zero"arr1[1]="array1-one"echo ${arr1[0]}echo ${arr1[1]} …如果省略该选项,行为是相同的,如下所示: 没有-a选项 declare arr2arr2[0]="array2-zero"arr2[1]="arr
使用-a标志声明bash数组的附加值是什么,如下所示:
与国旗 declare -a arr1 arr1[0]="array1-zero" arr1[1]="array1-one" echo ${arr1[0]} echo ${arr1[1]} …如果省略该选项,行为是相同的,如下所示: 没有-a选项 declare arr2 arr2[0]="array2-zero" arr2[1]="array2-one" echo ${arr2[0]} echo ${arr2[1]} 关联数组(选项-A)也是如此. 解决方法
对于数字索引数组,您可以跳过declare -a,但不能跳过关联数组的声明-A.为了证明后者:
declare array array[one]=1 array[two]=2 echo "${array[one]}" …发出: 2 为什么?让我们使用declare -p数组来看: $declare -p array declare -a array='([0]="2")' 单词1和单词2都被强制为数值0,因此它们覆盖了相同的键. 也就是说,声明-a数组不是一个完整的noop.相比: unset array # start from a blank slate declare -a array declare -p array …发出: declare -a array='()' 然而,如果我们省略-a,我们看到没有分配类型数据,所以假定我们的变量只是一个字符串,直到它被分配给一个明确表明它应该是一个数组的方式: unset array # start from a blank slate declare array declare -p array …发出declare – array =“”,除非有赋值: unset array # start from a blank slate declare array array[0]="zero" declare -p array ……正确地发出声明-a array ='([0] =“zero”)’,这意味着在上面的代码中,只有在数组[0] =“零”行之后,数组才真正成为一个数组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读