Diga a pessoa que sugeriu ||
que ele é um idiota. Usar ||
faz o snippet ler todas as linhas de fileA
primeiro e, em seguida, todas as linhas de fileB
, porque, contanto que read lineA
retorne verdadeiro, read lineB
não será executado. Em vez disso, chame read
ambas as vezes, salvando o status de retorno e, em seguida, teste os status de retorno.
while
IFS= read -r lineA; statusA=$?
IFS= read -r lineB; statusB=$?
[ $statusA -eq 0 ] || [ $statusB -eq 0 ]
do …
Você pode testar $statusA
e $statusB
dentro do loop se precisar saber se um arquivo está esgotado (o conteúdo da linha estará vazio, mas isso não é distinguível de uma linha vazia). / p>