Aqui está uma versão do seu script mais ou menos modificada:
$ more cmd.bash
#!/bin/bash
echo "Whose phone number do you want to know?"
read name
number=$(grep "$name" telephone | cut -d';' -f2)
echo ''
echo "The phone number of $name is $number."
Funciona da seguinte forma:
$ ./cmd.bash
Whose phone number do you want to know?
Hans
The phone number of Hans is 015253694.
Como funciona
Ele simplesmente recebe o nome por meio do comando read name
e armazena o que foi digitado na variável $name
. Em seguida, percorremos o arquivo telephone
e usamos cut
para dividir a linha resultante do arquivo telephone
em 2 campos, usando o ponto-e-vírgula como caractere de separação. O número de telefone, arquivado 2, é armazenado na variável $number
.
Teste
Você pode usar o seguinte script para testar se o script funciona, usando os dados do arquivo telephone
.
$ while read -r i ;do
echo "-----"
echo "Test \"$i\""
./cmd.bash <<<$i
echo "-----"
done < <(cut -d';' -f1 telephone)
Os comandos acima leem o conteúdo do arquivo telephone
, dividem-no no ponto e vírgula, ;
e, em seguida, obtêm cada valor do campo 1 (nomes) e fazem um loop por eles 1 por vez. Cada nome é então passado para o seu script, cmd.bash
, via STDIN, aka. %código%. Isso simula um usuário digitando cada um dos nomes.
$ while read -r i ;do echo "-----"; echo "Test \"$i\""; \
./cmd.bash <<<$i; echo "-----"; done < <(cut -d';' -f1 telephone)
-----
Test "Jan"
Whose phone number do you want to know?
The phone number of Jan is 032569874.
-----
-----
Test "Annemie"
Whose phone number do you want to know?
The phone number of Annemie is 014588529.
-----
-----
Test "Hans"
Whose phone number do you want to know?
The phone number of Hans is 015253694.
-----
-----
Test "Stefaan"
Whose phone number do you want to know?
The phone number of Stefaan is 011802367.
-----