read
Como você viu no script anterior para entrar com um dado usa-se read
.
O read tem alguns macetinhos. Pra começar: você não precisa colocar um
echo toda hora que for usar o read para escrever um prompt. Basta fazer
read -p prompt variavel
Veja esta sequencia de exemplos:
#!/bin/bash
# read1.sh
read -p "Entre com uma string: " string
echo $string
Executando o script:
$ ./read1.sh
Entre com uma string: klogd eh um tremendo cachacero!
klogd eh um tremendo cachacero!
Agora um outro script:
#!/bin/bash
# read2.sh
read -p "Entre com 3 strings: " s1 s2 s3
echo "s1 = $s1 s2 = $s2 s3 = $s3"
Executando o script:
$ ./read-2.sh
Entre com 3 strings: j00nix eh cabecudo
s1 = j00nix s2 = eh s3 = cabecudo
Agora executando o mesmo script e entrando com mais de 3 strings:
$ ./read-2.sh
Entre com 3 strings: eSc2 adora ficar de copy'n'paste no IRC.
s1 = eSc2 s2 = adora s3 = ficar de copy'n'paste no IRC.
Quando o read
vai ler apenas uma variável, toda a string vai ser
atribuída a esta variável. Quando vai ler mais de uma variável ele atribui
cada string a sua respectiva variável; e quando o número de strings excede
o número de variáveis a última fica com o excedente.
O parâmetro -s
serve para não ecoar o que for digitado. É útil para
digitar uma senha por exemplo. Tente read -s PASS
e veja.
Você também pode determinar o número de caracteres que serão lidos com
o parâmetro -n
. Tente fazer read -n 10 VAR
. Mas cuidado: ao usar a
opção -n
você não poderá usar o backspace para fazer correções.
A opção -r
serve para que a contra-barra (backslash) não aja como um
caracter de escape. E isso me foi bastante útil para fazer o Mextract,
como você verá adiante.
Mais sobre o read na manpage do bash.