我正在使用fold
字符串创建字符数组。
INPUT=$1
arr=($(fold -w1 <<< "$INPUT"))
echo "$arr"
echo "$arr[@]"
我使用命令./myProgram 1234
来执行脚本。
预期输出:1 2 3 4
我得到什么:1
和1[@]
答案1
您已正确地将输出分配给数组,但取消引用需要帮助:
回显“$arr”
简单地输出数组的第一个元素,即1
。
回显“$arr[@]”
缺少大括号,它会告诉 bash 您想要为数组添加下标;按原样,它取消$arr
引用第一个元素,如上所述,然后打印[@]
.
相反,使用(例如):
printf '%s ' "${arr[@]}"
请参阅bash 手册中有关数组的部分它说:
可以使用 引用数组的任何元素
${name[subscript]}
。需要使用大括号以避免与 shell 的文件名扩展运算符发生冲突。