Shell Script – Read

Vamos conhecer um comando bastante utilizado em scripts onde há interação com o operador, vamos conhecer ele.

O nome do comando já defini sua função “ler”, mas ler o que, de onde, do que e como? Algumas das opções de usar read são:

-a Todas as opções irá ser armazenadas em um array até você pressionar ENTER
-d Caractere delimitador, só irá sair quando ele for informado
-e Readline é utilizado para obter o valor se é proveniente de um terminal
-i Usa um texto inicial de readline
-n Seta o numero de caracteres a ser digitado antes de continuar
-p Prompt interativo, onde você pode informar uma string a ser exibida e irá ler o que voce digitar
-r Elemina o uso de para caracteres de escape, nunca precisei utilizar este
-s Silent mode, não é feito o echo do que é digitado, como digitar senha no terminal
-t Timeout, tempo limite que irá aguardar o operador digitar algo
-u Lê a partir de um file descriptor no lugar do input do terminal

Estrutura para uso do read:

Vamos ao exemplo ExRead01.sh:

Saída:

Acho que ficou bem fácil de ver o uso do read e o mesmo com as opções -p e -a, fácil não?
Agora vamos a outro exemplo pratico o ExRead02.sh:

Saída:

Ou se demorar mais de 5s para digitar o usuário:

Neste exemplo fizemos uso dos parâmetros -t de timeout no usuário onde especificamos o tempo de 5 segundos, o -s na senha para não echoar o que é digitado e -n para forçar digitar 8 caracteres para um código de segurança.
Nosso próximo exemplo é o script que faz uso do parâmetro de delimitador -d, vamos ver o ExRead03.sh:

Saída:

Para encerrar o comando read um ultimo exemplo utilizando o parâmetro -u que só notei esse comando quando precisei uma vez e pesquisei, então vamos ver o ExRead04.sh:

Saída:

Esse ultimo reuniu algo interessante de usar com switch|case e o parâmetro -u, onde fiz uma brincadeira onde o operador informa um device do Linux e depois perguntar de deseja formatar, que é um parâmetro -n 1 que será s ou n, se for algo diferente ele sai do script e caso seja n também irá finalizar o script e teclando s faz uma sacadinha com uma barra progressiva inofensiva pois não estará formatando nada neste script.
Depois faço o uso do -u onde na linha 26 eu obtenho quantas linhas tem meu arquivo /etc/hosts, e na linha 29 crio o file descriptor com o conteúdo do /etc/hosts e em seguida entro em uma repetição de 0 até o numero de linhas do meu arquivo e usando read -u aponto meu descritor e vou associando cada linha a uma variável $a[NUMERO_DO_FOR], na linha 36 finalizo o file descriptor com o & para dizer que não é um arquivo que vem e mostro as primeiras quatro linhas com echo na linha 38 a 41, em breve irei escrever um post sobre exec.
Em seguida tenho outra aplicação usando read para ler um arquivo inteiro no caso o conteúdo do /etc/passwd e filtrando apenas a primeira coluna usando o cut e um pipe usando while read line e dentro da estrutura de repetição while dou um echo identificando todas as linhas.

Comando read é bastante utilizado em scripts interativos e que não seja apenas funcional com passagem de parâmetros, passei praticamente todas as funções do manual page e até uma sacadinhas com esse ultimo script e agora você use sua imaginação e o conteúdo que vimos até agora e boa diversão.

Até a próxima!

Referências

http://linuxcommand.org/lc3_man_pages/readh.html
http://www.cyberciti.biz/faq/?s=read

Share Button

CC BY-NC-SA 4.0 Shell Script – Read by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.