<Anterior | Conteúdo | Próxima>
Lendo arquivos com loops
enquanto e até podem processar a entrada padrão. Isso permite que os arquivos sejam processados com loops while e until. No exemplo a seguir, exibiremos o conteúdo do arquivo distros.txt usado nos capítulos anteriores:
#! / Bin / bash
# while-read: lê as linhas de um arquivo enquanto lê o lançamento da versão da distro; Faz
printf "Distribuição:% s \ tVersão:% s \ tLançado:% s \ n" \
$ distro \
$ version \
$ liberação feita <distros.txt
#! / Bin / bash
# while-read: lê as linhas de um arquivo enquanto lê o lançamento da versão da distro; Faz
printf "Distribuição:% s \ tVersão:% s \ tLançado:% s \ n" \
$ distro \
$ version \
$ liberação feita <distros.txt
Para redirecionar um arquivo para o loop, colocamos o operador de redirecionamento após o feito demonstração. O loop vai usar ler para inserir os campos do arquivo redirecionado. o ler O comando sairá após cada linha ser lida, com um status de saída zero até que o fim do arquivo seja alcançado. Nesse ponto, ele sairá com um status de saída diferente de zero, encerrando assim o loop. Também é possível canalizar a entrada padrão em um loop:
#! / Bin / bash
# while-read2: lê linhas de um arquivo
classificar -k 1,1 -k 2n distros.txt | enquanto lê o lançamento da versão da distro; do printf "Distribuição:% s \ tVersion:% s \ tReleased:% s \ n" \
$ distro \
$ version \
$ release
feito
#! / Bin / bash
# while-read2: lê linhas de um arquivo
classificar -k 1,1 -k 2n distros.txt | enquanto lê o lançamento da versão da distro; do printf "Distribuição:% s \ tVersion:% s \ tReleased:% s \ n" \
$ distro \
$ version \
$ release
feito
Aqui pegamos a saída do tipo comando e exibir o fluxo de texto. No entanto, é importante lembrar que, como um pipe irá executar o loop em um subshell, quaisquer variáveis criadas ou atribuídas dentro do loop serão perdidas quando o loop terminar.