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

时间:2018-02-18 16:33:15

标签: arrays linux bash shell

 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   

尝试了显示数组所有元素但未获得所需输出的所有方法。它显示了数组的最后一个元素。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

  

您正在阅读数组arr中的数据并尝试打印array

答案 2 :(得分:1)

您继续使用array重新定义read -a。代码应该像这样编写:

#!/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

答案 3 :(得分:0)

希望这能帮助其他有同样问题的人。

在shell中显示数组的所有内容:

if img and ref_img:
    print("Both images extracted from directory successfully")

清理你的脚本(但不确定你的意图是什么):

"${arr[*]}"

我从@choroba 找到了类似的解决方案:How to echo all values from array in bash