shell 如何在bash中循环访问数组?

jjjwad0x  于 2022-11-16  发布在  Shell
关注(0)|答案(2)|浏览(160)

我尝试循环遍历一个数组,我有两个输入值,我尝试在val1中打印一个值,在val2中打印第二个值。因此,我必须创建一个名为test_input. txt的文本文件,其中包含需要打印的所有输入
这是文本文件test_input. txt

1,2
3,4
10,30

我已经知道如何将输入放入数组中,但是在打印值时遇到了麻烦。

//this reads the text file and puts it in an array
IFS=,$'\n' read -d '' -r -a array < test_inputs.txt

for i in "${array[@]}"
do 
echo "val1: ${array[$i}} and val2: ${array[$i++]}"
done

所需输出为

val1: 1 and val2: 2
val1: 3 and val2: 4
val1: 10 and val2: 30
oipij1gg

oipij1gg1#

您可以使用C样式for循环:

#!/bin/bash

IFS=,$'\n' read -d '' -r -a array < test_inputs.txt
n=${#array[*]}
for ((i = 0; i < n; i += 2))
do 
    echo "val1: ${array[i]} and val2: ${array[i+1]}"
done
hsvhsicv

hsvhsicv2#

我理解你的问题,因为每行包含2个条目,用逗号分隔。
在这种情况下,我建议逐行读取数组,而不是逐元素读取:

mapfile <test_inputs.txt
for line in "${MAPFILE[@]}"
do
  echo "val1: ${line%,*} and val2: ${line#*,}"
done

相关问题