Tente esta mudança
fd=""
tmplog="/tmp/temp_${$$}_${RANDOM}"
tail -1000 /var/log/syslog > “$tmplog”
exec {fd}<“$tmplog"
while IFS='' read -r -u $fd line || [[ -n $line ]]; do
#your commands here
done
exec {fd}>&-
rm "$tmplog"
Como funciona:
Atribuir fd como uma variável.
Crie um arquivo temporário usando o script PID e o número “RANDOM” (você também pode usar o comando mktemp no lugar disso).
Abra o descritor de arquivo fd para leitura do arquivo temporário.
Use while loop com IFS configurado como nothing e execute o comando read com a opção -u para ler a partir de fd .
Coloque seus comandos dentro do loop usando a mesma variável line .
Feche o descritor de arquivos.
Remova o arquivo temporário.