/ / Linux Bashrc Nexted für Loops - Arrays, Linux, Bash

Linux Bashrc Nexted für Loops - Arrays, Linux, Bash

Unten ist mein Code, ich habe zwei Arrays ... Array und Array2.

#!/bin/bash

array = (1 3 5 7 9)
array2 = (2 4 6 8 A)

for i in "${array[@]}"
do
echo $i
for i in "${array2[@]}"
do
echo $i
done
done

Ich möchte, dass die folgende Ausgabe auf meiner Konsole ausgegeben wird, wenn ich mein Skript ausführe:

1
2
3
4
5
6
7
8
9
A

Aber stattdessen bekomme ich Folgendes:

1
2
4
6
8
A
3
2
4
6
8
A
5
2
4
6
8
A
7
2
4
6
8
A
9
2
4
6
8
A

Ich versuche wirklich, das Folgende durch verschachtelte Schleifen wie in C / C ++ zu erreichen:

char array[5] = {1, 3, 5, 7, 9};
char array2[5] = {2, 4, 6, 8, A};

for (int i=0; i<5; i++){
std::cout << array[i] << std::endl;
std::cout << array2[i] << std::endl;
}

Aber wie kann ich den gleichen Iterator var i verwenden, um zwei verschiedene Arrays zu steuern?

Antworten:

5 für die Antwort № 1

Schleife über die Indizes statt über die Elemente:

#!/bin/bash

array=(1 3 5 7 9)
array2=(2 4 6 8 A)

for i in "${!array[@]}"
do
echo "${array[i]}"
echo "${array2[i]}"
done

1 für die Antwort № 2

Die mehr oder weniger genaue Transkription des C ++ Codes wäre

for i in {0..5}
do
echo ${array[$i]}
echo ${array2[$i]}
done

1 für die Antwort № 3

Um einen weiteren Algorithmus hinzuzufügen, können Sie das erste Element jedes Arrays wiederholt drucken und die Popup-Funktion aktivieren, bis das erste leer ist:

array=(1 3 5 7 9)
array2=(2 4 6 8 A)

while [ -n "$array" ]
do
echo ${array[0]}
echo ${array2[0]}
array=("${array[@]:1}")
array2=("${array2[@]:1}")
done

edit: Dies zerstört die Arrays wie du willst, also benutze es nur, wenn du dich nicht um die Arrays kümmerst, die nach der Schleife existieren.