Explorando a entrada de dados com READ em Bash Shell

Mostro algumas opções úteis no comando read que podem ajudar na hora de escrever certas funcionalidades nos scripts em Bash Shell, algumas me ajudaram recentemente.

[ Hits: 67.412 ]

Por: Raimundo Alves Portela em 11/10/2011 | Blog: http://portelanet.com


Usando as opções do read



Recentemente precisei manipular um pouco a entrada de dados em Bash Shell, obtendo o que o usuário digitar no console e fazendo alguns tratamentos. Em minhas pesquisas vi que o comando read tem várias opções que ajudam nessa tarefa.

Estou há uns meses aprendendo aos poucos sobre shell e ainda não tinha visto muito material usando essas opções do read, talvez por não haver a necessidade, ou porque para aprender mais sobre ele não basta "man read", e sim consultar diretamente o manual do bash quem tem mais de 3 mil linhas.

Então resolvi escrever esse material para ajudar a mostrar como estender o read.

O uso padrão, quem escreve scripts em shell já conhece:

read VARIAVEL

Que segue uma sintaxe comum a outras linguagens (por exemplo a Pascal).

Então vamos ver algumas opções que estendem os poderes do read.

I/O (imprimindo e lendo valores) ao mesmo tempo

read -p 'TEXTO' VARIAVEL

A opção -p originalmente mostra uma mensagem na saída de erro padrão, se você não estiver redirecionando essa saída para o vácuo (/dev/null) ou para nenhum outro lugar, será apresentada na tela do console normalmente.

Exemplo:

#!/bin/bash
# A entrada de dados é encerrada ao digitar a interrogação '?'
read -p "Digite sua pergunta? : " -d'?' PERGUNTA
echo
echo "$PERGUNTA"

Você pode inclusive digitar ENTER e mesmo assim o read não será encerrado (CTRL+C é covardia, ele faz parte do bash e vai encerrar).

    Próxima página

Páginas do artigo
   1. Usando as opções do read
   2. Mais opções e conclusão
Outros artigos deste autor

Aplicativos para gerenciar a Área de Transferência (Clipboard)

Mostrando dicas ao iniciar o terminal

Consultas SQL pelo Terminal no Postgres, Mysql, SQL Server, etc

Enviar e-mail pelo terminal com mutt

Yad 0.16 - Eu quero sempre mais de ti

Leitura recomendada

Introdução a LUA, uma poderosa linguagem de programação

Como matar um processo - kill, killall, pkill e xkill

Introduzindo um pouco mais a fundo o shell script

Introdução ao Shell Script (parte 2)

Trabalhar com array no Bash

  
Comentários
[1] Comentário enviado por azk em 11/10/2011 - 15:10h

Muito bom!
Vai me ajudar bastante nos meus estudos!
Valeu!

[2] Comentário enviado por ember em 12/10/2011 - 20:18h

haha legal cara, isso pode ser usado em C neh?
so mto novo em linux e em programacao, mas minha esperanca era usar isso read -d'w' com um timeout, tem como?
essa leitura pode ser colhida numa variavel em um prog c? dae nao precisa usar a getch do ncurses ne? ncurses nao ta funfando...
EDIT: agora q vi a parte 2 foi mal... mas como implemento em c? da?

[3] Comentário enviado por rai3mb em 13/10/2011 - 01:58h

Ola @ember
... mas minha esperanca era usar isso read -d'w' com um timeout, tem como?
Tem você pode juntar os diversos parâmetros para alcançar seu objetivo, veja:

read -p 'Digite algo em 5 segundos : (w - para sair)' -t 5 -d'w'

...essa leitura pode ser colhida numa variavel em um prog c?

Acho que não, não conheço muito ainda de C, mas fiz um teste com a função system e não deu certo:

#include <stdio.h>
#include <strings.h>
#include <stdlib.h>

int main(int argc, char **argv) {
system("read -t 5'");
}

Usando o parâmetro da erro:

read: 1: Illegal option -t






Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts