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.