comando read

1. comando read

Salvador Moreira Braz
smbraz

(usa Conectiva)

Enviado em 04/04/2013 - 01:13h

necessito fazer um script shell da seguinte maneira


echo -ne "o rato come " ; read num; echo -ne " queijos."
e finalize
O rato come 10 queijos.


porém o que acontece
o rato come 10
queijos.

o read empurra o próximo comando para próxima linha.

pergunta: Como fazer para que fique tudo na mesma linha.


peço tambem orientação de onde encontrar material para formatar os textos em shell script.
atenciosamente smbraz.


  


2. Re: comando read

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 04/04/2013 - 03:46h

assim não ajudaria ?



#!/bin/bash

echo "digita um numero: "
read num
echo "o Rato come $num queijos"



3. comando read

Salvador Moreira Braz
smbraz

(usa Conectiva)

Enviado em 04/04/2013 - 09:18h

Agradeço a resposta.Ela satisfaz em parte, porém a estrutura deve ficar como abaixo

echo -ne "o rato come "; read num; echo -ne " queijos"

algo a ser feito sobre o comando read para que ele leia naquele ponto e não mude de linha para que a frase fique formada.

echo -ne '{TTEXTO}33[31;1mprintf("Digite o primeiro número : {TTEXTO}33[m' ;read -p num1 ; echo -ne '{TTEXTO}33[31;1m )"{TTEXTO}33[m'" #A FUNÇÃO PRINTF IMPRIMIRÁ DIGITE O PRIMEIRO NUMERO"

para que a frase acima fique

"(Digite o primeiro número : AQUI ELE FAZ A LEITURA DO NUMERO )" #A FUNÇÃO PRINTF IMPRIMIRÁ DIGITE O PRIMEIRO NUMERO"

atenciosamente smbraz



4. Re: comando read

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 04/04/2013 - 10:30h

Leia a manpage do echo, vai ter um escapamento que cancela a nova linha (eu acho que é \n). Aí você coloca
 $ echo -ne "o rato come \n"; read num; echo "dez queijos" 



5. Re: comando read

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 04/04/2013 - 10:40h

Correção:
 $ echo -ne "Primeira parte do texto \e" ; read num ; echo "$num segunda parte do texto" 


EDIT: mais elegante
[code] $ read -p "Primeira parte do texto \e" num; echo " segunda parte do texto"


6. comando read

Salvador Moreira Braz
smbraz

(usa Conectiva)

Enviado em 04/04/2013 - 14:02h

As formas acima apresentadas nao satisfaz visto que o read provoca mudança de linha.
O intuito e receber a variável no local deixando integra a sentença.Obrigado.at.smbraz.


7. Re: comando read

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/04/2013 - 23:44h

smbraz escreveu:

As formas acima apresentadas nao satisfaz visto que o read provoca mudança de linha.
O intuito e receber a variável no local deixando integra a sentença.Obrigado.at.smbraz.


Digitar ENTER causa mudança de linha.

Só se você contar os caracteres da primeira frase, somar com o número de caracteres da variável lida e imprimir a segunda frase na linha anterior e na posição calculada pela soma dos caracteres.

E prá isso só usando sequência de escape.


8. Re: comando read

Paulo
paulo1205

(usa Ubuntu)

Enviado em 11/04/2013 - 01:33h

Veja q manpage de stty.


9. Re: comando read

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 17/04/2013 - 01:46h

Uma forma:


read -p "O ratou comeu " -n1 num; echo -n " queijos"


Mais em: http://www.vivaolinux.com.br/artigo/Explorando-a-entrada-de-dados-com-READ-em-Bash-Shell/?pagina=1


10. Re: comando read

Salvador Moreira Braz
smbraz

(usa Conectiva)

Enviado em 17/04/2013 - 08:05h

smbraz@SMBRAZ:~$ read -p "O rato comeu " -n1 num; echo -n " queijos "
O rato comeu 1 queijos 0K

smbraz@SMBRAZ:~$ read -p "O rato comeu " -n3 num; echo -n " queijos "
O rato comeu 200 queijos OK

smbraz@SMBRAZ:~$ read -p "O rato comeu " -n3 num; echo -n " queijos "
O rato comeu 10
queijos NÃO OK

smbraz@SMBRAZ:~$ read -p "O rato comeu " -n5 num; echo -n " queijos "
O rato comeu 2312
queijos NÃO OK

A solução atende quando o numero informado é igual ao nnumero, porém se o numero for menor ha a quebra de linha.
Como é um script e não sei o a quantidade de numeros informados provavelmente a linha será quebrada.
Sobra saber se consigo uma expressao regular que me permita por n numeros ou se ha algum comando que quebra o efeito do
enter para o read NÃO mudar de linha.

echo -ne "O rato comeu " ; read -s num; echo -n $num ; echo -ne " queijos"
O rato comeu 10 queijos NÃO OK POIS NÃO MOSTRA O NUMERO SENDO DIGITADO, ELE APARECE DEPOIS DO ENTER.

ATENDE A PROPOSIÇÃO, porém quando executado no script o numero aparece depois do enter , e pessoa nao ve o numero sendo digitado e nao fica legal.

Agradeço a contribuição e continuaremos pesquisando a soluçao.
Atenciosamente smbraz.


11. Re: comando read

Perfil removido
removido

(usa Nenhuma)

Enviado em 17/04/2013 - 08:59h

Dá uma lida nisso aqui: http://www.toyanet.com.br/msdos622/ansi_sys.htm

Exemplo:

echo -e "\ 033[5A" -> joga o cursor cinco linhas acima de onde se encontra e na mesma coluna. Você precisa subir uma linha, não é?
echo -e "\ 033[5C" -> joga o cursor cinco colunas à frente de onde se encontra e na mesma linha. Você precisa apenas se deslocar na quantidade de caracteres da sting recebida, mais um (espaço em branco).

Há mais opções dessas sequencias. Para a variável $string, o número de caracteres é ${#string}.

Dentro das alternativas do read, que são mais simples que essa que mencionei, deve haver uma opção que evita a mudança de linha.

$ help read mostra todas essas opções.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts