fdmarp
(usa Debian)
Enviado em 07/12/2009 - 08:29h
Não sei se você está acostumado a trabalhar com funções, são como scripts independentes dentro do seu script.
A estrutura é assim
menu ()
{
echo "MENU PRINCIPAL"
echo "1. Opcao A"
echo "2. Opcao B"
read opcao
}
Então, para apresentar o menu principal, pasta fazer uma chamada a função menu ... acho que vai ficar mais claro abaixo, mas vamos começar a ler o script de baixo para cima, pois uma função, apesar de estar no seu script só é executada quando chamada..
echo "Digite a variavel" # um echo simples
read variavel # abre espaço para interação do usuário,
# que digitará o valor da variavel
checa # Chama a função chamada "checa"
checa () # Nome da função
{
if [ -f arquivo ]; then # Checa se o arquivo de nome "arquivo" existe,
# por que caso contrário você tomará um erro
insere # Se existe o arquivo, chama o módulo insere
else # Se não
touch arquivo # Cria o arquivo
insere # e chama o módulo ou função "insere"
fi
}
insere () # Nome da Função
{
Controle=`grep -c $variavel$ arquivo` # dá um grep pelo valor da variável,
# trazendo só a quantidade de linhas (-c)
# o $ no final da variável fala que o
# valor tem que exatamente, ou seja,
# se a variável é ana, não conta anarquia
# ou juliana.
if [ $Controle -eq 0 ]; then # se trouxer 0 linhas, significa que não
# existe o texto no arquivo
echo $variavel >> arquivo # Ai, insere ele no final do arquivo
else # Se der mais que 0, significa que já
# exite, e ai ...
echo "variavel ja existe no arquivo" # Só avisa o usuário que já existe
fi
}
Você deve estar se perguntando, mas se eu li de traz para frente, por que raios você não escreveu ela na ordem!!! rsss
Bom cara, o script é interpretado de forma sequencial, mesmo que as funções não sejam executadas, elas tem que ser lidas primeiro antes de chamadas..
Faça a esperiência ... coloque os módulos abaixo do início ..
================================
echo "Digite a variavel"
read variavel
checa
checa ()
{
if [ -f arquivo ]; then
insere
else
touch arquivo
insere
fi
}
insere ()
{
Controle=`grep -c $variavel$ arquivo`
if [ $Controle -eq 0 ]; then
echo $variavel >> arquivo
else
echo "variavel ja existe no arquivo"
fi
=====================================
Beleza?! Deu pra entender ...
Dá pra fazer sem as funções.. Claro que dá, mas eu acho que fica mais organizado ... aliás ... se vc tiver ceteza que o arquivo vai sempre existir o script seria só ...
echo "Digite a variavel"
read variavel
Controle=`grep -c $variavel$ arquivo`
if [ $Controle -eq 0 ]; then
echo $variavel >> arquivo
else
echo "variavel ja existe no arquivo"
fi
Agora como ele tem duas funções distintas ... uma checar a existencia do arquivo, outra é inserir, aí por organização prefiro fazer assim.