为什么声明-p $ ARRAY不显示ARRAY的内容?

时间:2014-10-09 20:15:35

标签: arrays bash environment-variables

只是弄乱了bash,我想出了

declare -a K <<< "${SHELL}"; declare -p $K

declare -p是一个简短的命令,用于检查数组是否已创建,如果给定的变量实际上是一个数组,通常它会为给定的数组发出一个声明,如果一切都按预期进行的话。

<<<某些内容的内容重定向到标准输入,这样您就可以使用变量的内容,就像它来自标准输入一样。

declare -a声明一个数组,正常一个不是关联数组,键只是数字。

那么为什么这个命令打印出的数据blob甚至看起来不像declare -p的常规输出,它甚至看起来都不像数组。它只是一系列declare <something> <something>

有人可以解释这个命令的行为吗?

1 个答案:

答案 0 :(得分:3)

使用它的正确方法是:

declare -a K=("${SHELL}")

declare -p K
declare -a K='([0]="/bin/bash")'

因此请使用declare -p K代替declare -p $K

根据help declare

  -p    display the attributes and value of each NAME