#!/bin/sh
LOG=’cat /var/log/vsftpd’
for LINHA in $LOG; do
echo $LINHA;
done
Infelizmente a solução acabou não sendo tão simples assim. Ao executar tal script eu acabava por receber cada palavra contida no arquivo em uma linha diferente.
Cheguei a fazer alguns testes tentando ler o arquivo de uma maneira diferente, e todos foram sem sucessos. Depois de coçar a cabeça um pouco mais eu finalmente encontrei a resposta, a mais simples possível: Inter Field Separator.
Inter Field Separator, ou IFS, é a variável padrão do sistema que define a divisão entre os campos de uma determinada string. Esse valor, que fica salvo na variável de mesmo nome, que é utilizado pelo for.
Por isso, tudo que precisei fazer para que meu script funcionasse foi alterar o valor de IFS de modo que o separador de campos do sistema deixasse de ser o espaço (padrão) e passasse a ser a quebra de linha. Dessa maneira, o meu script acabou ficando assim:
#!/bin/sh
IFS=´
´
lOG=’cat /var/log/vsftpd’
for LINHA in $LOG; do
echo $LINHA;
done