繁体   English   中英

Bash 中的数组:显示数组的所有元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM