Looping over pairs of values in bash [duplicate] Looping over pairs of values in bash [duplicate] bash bash

Looping over pairs of values in bash [duplicate]


I agree with the answer currently proposed by fedorqui in the context of the question currently asked. The below is given only to provide some more general answers.

One more general approach (for bash 4.0 or newer) is to store your pairs in an associative array:

declare -A pairs=( [4_1]=4_2 [5_1]=5_2 [6_1]=6_2 [7_1]=7_2 [8_1]=8_2 )for i in "${!pairs[@]}"; do  j=${pairs[$i]}  paste "$i.txt" "$j.txt" >"${i}.${j}.txt"done

Another (compatible with older releases of bash) is to use more than one conventional array:

is=( 4_1 5_1 6_1 7_1 8_1 )js=( 4_2 5_2 6_2 7_2 8_2 )for idx in "${!is[@]}"; do  i=${is[$idx]}  j=${js[$idx]}  paste "$i.txt" "$j.txt" >"$i.$j.txt"done


Simplest so far:

for i in "1 a" "2 b" "3 c"; do a=( $i ); echo "${a[1]}"; echo "${a[0]}"; donea1b2c3


If you want to use one variable and perform and action with it, you just need to use one loop:

for file in 4 5 6 7 8do   paste "${file}_1" "${file}_2"done

This will do

paste 4_1 4_2paste 5_1 5_2...