exec 3<file1
exec 4<file2
while read line1 <&3 && read line2 <&4
do
echo "line1=$line1 and line2=$line2"
done
exec 3<&-
exec 4<&-
Discussão
-
Acima, o espaço em branco inicial e final é retirado das linhas de entrada. Se você deseja preservar esse espaço em branco, substitua
read …
porIFS= read …
-
Acima, as barras invertidas na entrada serão interpretadas como caracteres de escape. Se você não quiser isso, substitua
read …
porread -r …
-
read line1 <&3
lêline1
do descritor de arquivo 3. Isso também pode ser escrito de forma equivalente comoread -u3 line1
. -
Declarações como
for file in $(cat $1);
têm alguns problemas que você deve saber sobre isso. O shell aplicará a expansão do nome do caminho de divisão de palavras ao conteúdo do arquivo e, a menos que você espere, pode levar a vários erros.
Alternativa
while read line1 <&3 && read line2 <&4
do
echo "line1=$line1 and line2=$line2"
done 3<file1 4<file2