Bash script para fazer loop enquanto lê Stdin

Bash script para fazer loop enquanto lê Stdin
O conceito "Stream" em um computador se aplica a algo que pode mover dados. Qualquer instrução que você esteja executando no terminal estaria em qualquer posição do fluxo. Essas posições podem ser uma origem ou uma saída. Vamos obter uma rápida visão geral do fluxo específico de stdin. No Linux, Stdin refere -se à entrada padrão ou padrão. A entrada necessária deve ser um texto. Para adquirir dados ou informações de você, é o manipulador de arquivos que seu procedimento Readout. Quase todos os fluxos são vistos no Linux como se fossem diretórios. Podemos ler/escrever informações de todos esses fluxos, exatamente como você pode ler/escrever um documento. Usando um número de descritor de arquivo especial relacionado a ele fornece uma ótima abordagem para acessar um documento. Houve valores especiais alocados a cada um deles ao longo da situação de tais fluxos. Stdin tem um valor de 1.

Stdin: 1

Vamos começar entendendo através da prática sobre o stream stdin usando loops. No primeiro, estaremos tendo um exemplo básico do stdin como lido. Executar a instrução abaixo. A instrução exigiria entrada do teclado. Nisso, através do stdin, a ferramenta de leitura recebe o texto.

$ leia

Exemplo 01:

Crie um novo arquivo, “Entrada.sh ”e adicione o script anexado a ele. Estamos usando o loop while para ler o texto por um usuário do terminal e imprimi -lo. O script é nomeado com um "/dev/stdin" como o primeiro parâmetro de US $ 1, no qual a abordagem correspondente lê a entrada regular do console. Salve este arquivo e feche -o.

Abra o terminal e execute o arquivo recém -atualizado “Entrada.sh ”como:

$ BASH entrada.sh

Quando você executa o arquivo usando o comando Bash, você será pulado para a próxima linha para escrever algo. Como você pode ver abaixo, o usuário escreveu um texto de uma linha e pressione Enter.

O texto escrito por um usuário será lido primeiro e impresso na próxima linha como abaixo.

Você pode até fornecer um espaço entre a entrada do seu texto como abaixo.

Exemplo 02:

Agora vamos ler o texto do arquivo. Atualize o mesmo arquivo “Entrada.SH "fornecendo o nome do arquivo" Script.sh ”como o primeiro parâmetro de US $ 1. A abordagem correspondente lê deste documento.

Temos as seguintes informações de texto no arquivo “Script.sh ”como abaixo. Vamos verificar como funciona.

Executar o arquivo “Entrada.sh ”usando o comando bash. Você verá que o fluxo de leitura lê do arquivo fornecido “Script.sh ”e imprimi -lo no terminal como abaixo.

$ BASH entrada.sh

Exemplo 03:

Vamos ter um exemplo para ler cada diretório um por um usando stdin. Você tem que considerar o parâmetro -u com a leitura. Nisso, "-u 1" implica "Leia de Stdin.”Neste código,“ linha ”representa o nome do arquivo, e o incremento“ i ++ ”é usado para pular para o próximo diretório ou arquivo. Ele também contará o número do arquivo que foi lido também. Vamos executar este código para verificar o que acontece a seguir.

Executar o arquivo Bash “Entrada.sh ”. Isso solicitará que você insira algum texto para pular para o próximo arquivo. Aqui "Comm" representa o nome do primeiro arquivo.

$ BASH entrada.sh

Enquanto continua isso, você pode ver que temos uma lista de arquivos pelos quais passamos.

Exemplo 04:

Neste exemplo, temos dois arquivos relacionados para ler de. Atribua os privilégios necessários aos dois arquivos usando o comando "chmod" como abaixo.

chmod u+x nome do arquivo

Escreva o código abaixo no arquivo “Entrada.sh ”. Até que o loop "while" esteja recebendo linhas, ele imprimirá essas linhas. Enquanto a "linha" refere -se a outro arquivo "script.sh ”.

Temos o código abaixo no arquivo “Script.sh ”. Enquanto o loop está em execução, está imprimindo o número da linha.

Execute os dois arquivos usando ""./”No início do nome do arquivo e se separar usando“ ”|” na concha. Você verá que está imprimindo os números da linha enquanto imprimia o texto dos arquivos também. É um método muito simples para correlacionar dois arquivos ou seu conteúdo.

$ ./roteiro.sh | ./entrada.sh

Exemplo 05:

Vamos terminar este tópico por ter este exemplo simples e eficiente. Temos um arquivo “Script.sh ”com o conteúdo abaixo ou nomes de pessoas. Estaremos lendo esses nomes um por um de outro arquivo.

Atualize o arquivo “Entrada.SH: com o script abaixo. Neste script, temos um loop de tempo para elaborar "stdin" trabalhando. Estamos usando a leitura “Read -r” enquanto lêem outro arquivo como diferente de entrada padrão. Por outro lado, usando "-u" como específico do Bash, a saída padrão do usuário no terminal. Aqui, o "nome" é o texto ou conteúdo do arquivo "script.sh ”. A opção "-p" é usada para "ler". A declaração de leitura lerá o "nome" de outro arquivo e perguntará se você deseja excluí -lo ou não. A palavra -chave "IP" é usada para a resposta do usuário para afirmar a ação da exclusão. Qualquer que seja a resposta do usuário, ele o imprimirá. Na declaração "se", ele verificará se a entrada padrão do usuário é a mesma de "y", então ele imprimirá alguma mensagem como mencionar que está excluindo o "nome". Este processo será reiterado até o último conteúdo do arquivo “Script.sh ”.

Vamos dar uma olhada na saída do código acima. Execute o arquivo usando o comando bash. O sistema perguntará se você deseja excluir este "nome" ou não. Digite "Y" e toque "Enter".

$ BASH entrada.sh

Aqui, pressionando "Y", ele imprimirá "Y" e mostrará uma mensagem de que está excluindo o "nome" específico. Depois disso, mudará para outro "nome".

Ele solicitará que você exclua os nomes até que todos os nomes ou conteúdo do arquivo “Script.sh ”foram amarrados como abaixo.

Conclusão:

Passamos magnificamente por todos os exemplos simples de entrada padrão enquanto usamos o loop "while" no script Bash.