我想动态地创建和填充一个数组,但它并没有这样的工作:创建Bash阵列动态
i=0
while true; do
read input
field[$i]=$input
((i++))
echo {$field[$i]}
done
我想动态地创建和填充一个数组,但它并没有这样的工作:创建Bash阵列动态
i=0
while true; do
read input
field[$i]=$input
((i++))
echo {$field[$i]}
done
作业很好;查找错误:
echo ${field[$i]}
i= field=()
while :; do
read -r 'field[i++]'
done
是单向的。另一个是mapfile
。或者任何these。然而你发布的内容是有效的。
尝试这样:
#! /bin/bash
field=()
while read -r input ; do
field+=("$input")
done
echo Num items: ${#field[@]}
echo Data: ${field[@]}
它停止读取时,没有更多的输入可用(文件,^D
在键盘的结束),然后打印元素读取,并把数整个阵列。
您的实际问题是什么?除了一些小问题,你的代码没问题。 – ormaaj
它像一个简单的变量。如果我的输入是测试,它会回显:{test [0]} – Sadiel
我没有在那里看到任何'echo'。你只是有一个无限循环来追加一个数组,并对它做任何事情。是的扩展''$ test“'总是等价于''{{test [0]}”'(即使'test'不是数组)。 – ormaaj