只是瞎搞与bash
,我想出了
declare -a K <<< "${SHELL}"; declare -p $K
declare -p
是用来检查数组已创建或不是一个短期的命令,通常它吐出来了给定的数组声明如果一切顺利如预期的那样,如果给定的变量实际上是一个数组。
<<<
将东西的内容重定向到标准输入,这样您就可以使用变量的内容,就好像它来自标准输入。
declare -a
声明一个数组,一个正常一个不是关联的,键只是数字。
那么为什么这个命令打印出的数据块甚至看起来不像declare -p
的通常输出,它根本不像数组。这只是一系列declare <something> <something>
。
有人可以解释这个命令的行为吗?
@CharlesDuffy你确定'declare'不从'<<<''读取,如果我记得正确,我记得某些脚本沿着'declare -t<<< varWithMultiLineData'的行来快速创建一些脚本从一个变量的内容中吃了一个数组。 –
user2485710
2014-10-09 20:25:08
是的,很确定。在bash 4.0或更高版本中,'readarray'或'mapfile'可以做到这一点; '声明'不。 – 2014-10-09 20:25:33
@CharlesDuffy我想我只是混淆了2,它可能是'mapfile',因为'readarray'显然只是'mapfile'本身的别名。但是我仍然不知道这个命令是怎么回事。 – user2485710 2014-10-09 20:29:17