[英]Array in Bash: Displaying all elements of array
echo "Enter N " # enter N for number of inputs for the loop
read N # reading the N
#using c-style loop
for((i=1;i<=N;i++))
do
read -a arr # arr is the name of the array
done
echo ${arr[*]} # 1
echo ${arr[@]} # 2
尝试了所有方法来显示数组的所有元素,但没有获得所需的输出。 它显示数组的最后一个元素。
为了能够循环填充数组,请使用:
arr+=("$var")
完整代码:
read -p 'Enter N: ' N
arr=() # initialize an array
# loop N times and append into array
for((i=1;i<=N;i++)); do
read a && arr+=("$a")
done
您正在读取数组
arr
的数据并尝试打印array
您继续使用read -a
重新定义array
。 该代码应该这样写:
#!/bin/bash
echo "Enter N " # enter N for number of inputs for the loop
read N # reading the N
#using c-style loop
declare -a array
for((i=1;i<=N;i++))
do
read array[$i] # arr is the name of the array
done
echo ${array[*]} # 1
echo ${array[@]} # 2
可能有更好的方法可以做到这一点。 我只是想展示如何修复您的当前代码。
运行示例
$ bash ./dummy.sh
Enter N
2
3
4
3 4
3 4
希望这可以帮助其他有同样问题的人。
在 shell 中显示数组的所有内容:
"${arr[*]}"
清理你的脚本(但不确定你的意图是什么):
read -p "Enter N " N # User inputs the number of entries for the array
ARR=() # Define empty array
#using c-style loop
for ((i=1;i<=N;i++))
do
read -p "Enter array element number $N: " ADD # Prompt user to add element
ARR+=($ADD) # Actually add the new element to the array.
done
echo "${ARR[*]}" # Display all array contents in a line.
我从@choroba 找到了一个类似的解决方案: How to echo all values from array in bash
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.