Eu tornei o exemplo autônomo em relação a $var1
e $var2
:
#!/bin/bash
var1=$(for i in 1 2 3 4; do echo "a$i b$i user$i"; done)
echo "$var1"
var2=$(for i in 1 2 3 4; do echo "user$i"; done)
echo "$var2"
for i in $var2
do
j=$((j+1))
line=$(echo "$var1" | head -n $j | tail -n 1)
printf "%s %s\n" "$line" "$(echo ldap result for $i)"
done
Esta saída:
a1 b1 user1
a2 b2 user2
a3 b3 user3
a4 b4 user4
user1
user2
user3
user4
a1 b1 user1 ldap result for user1
a2 b2 user2 ldap result for user2
a3 b3 user3 ldap result for user3
a4 b4 user4 ldap result for user4
Na linha printf
, basta substituir o comando echo ldap result for $i
pelo comando desejado, como ldapsearch -xyx $i
.
Nota: com zsh (em vez de bash), isso pode até ser um pouco mais simples devido ao suporte de matrizes.
Uma solução alternativa baseada no comando paste
(embora o espaçamento seja menos controlável):
#!/bin/bash
var1=$(for i in 1 2 3 4; do echo "a$i b$i user$i"; done)
echo "$var1"
var2=$(for i in 1 2 3 4; do echo "user$i"; done)
echo "$var2"
for i in $var2
do
echo "ldap result for $i"
done | paste <(echo "$var1") -