No seu segundo exemplo, colocando var e var2 em linhas separadas, isso faz com que o comando seja o mesmo que
while var=9876; var2=765; read line
O comando while
permite uma lista de comandos antes de executar
os comandos no loop do-while. help while
mostra isso:
while: enquanto COMMANDS; fazer comandos; feito
Executar comandos contanto que um teste seja bem-sucedido.
Expanda e execute COMMANDS enquanto o comando final estiver no
'while' COMMANDS tem um status de saída de zero.
Status de saída: retorna o status do último comando executado.
Por outro lado, quando uma atribuição de variável precede um comando (neste caso read
), e essa atribuição é seguida apenas por espaços em branco, o escopo dessa variável é localmente para o comando SOMENTE! (internamente) ...
Veja: In 'while IFS = read .. ', por que o IFS não tem efeito?