Pode parecer um assunto batido, mas sempre há cada vez mais pessoas procurando sobre este tipo de informação na internet. Aqui vai uma introdução básica, que visa ensinar os iniciantes sobre as maravilhas de um terminal shell aberto. O Shell Script pode parecer simples, mas é uma ferramenta poderosa para resolver problemas rápidos e práticos.
Não conseguimos carregar os anúncios.Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
Parte 2: Variáveis, variáveis especiais e lendo do teclado
Variáveis
As variáveis podem guardar informações. Para se inicializar uma variável é usado o seguinte recurso:
<nome_da_variável>=<valor>
Nunca deixe espaço entre o nome da variável e o "=", senão o shell interpretará o nome da tua variável como um comando e ele provavelmente irá retornar um erro.
Quando inicializamos uma variável, não é usado o "$" antes do nome da variável. Somente depois quando vamos utilizar a variável que colocamos o "$" antes do nome dela. Por exemplo:
Não conseguimos carregar os anúncios.Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
Variáveis especiais
Existem algumas variáveis pré-definidas quando executamos um script shell. Elas podem ser usadas para saber, por exemplo, parâmetros passados para o script por linha de comando. Uma breve lista e o significado delas:
$0
Nome do script que está sendo executado
$1-$9
Parâmetros passados à linha de comando
$#
Número de parâmetros passados
$?
Valor de retorno do último comando ou de todo o shell script. (o comando "exit 1" retorna o valor 1)
$$
Número do PID (Process ID)
Lendo do teclado
Para se ler uma entrada a partir do teclado, utiliza-se o comando read. A sintaxe é assim:
read <var>
Ao ser executado, o terminal ficará esperando alguma entrada do usuário a partir do teclado. O conteúdo que o usuário digitar será associado à variável colocada no parâmetro do read. Este comando pode ser considerado como uma inicialização de variável e, portanto, não é necessário declará-la antes. Vejamos um exemplo:
read DIGITADO
echo $DIGITADO
O resultado deve ser exatamente o que o usuário digitou.
#1Comentário enviado por mlegidio em 23/10/2006 - 05:12h
Gostei muito deste artigo, pelo simples fato dele ter despertado em mim uma curiosidade em melhorar nessa parte. Obrigado pelos links enviados.
abracos
Mlegidio
#2Comentário enviado por pedemesa em 23/10/2006 - 09:32h
Show de bola! Muito bom mesmo! Vou ler mais sobre o XDialog...
#3Comentário enviado por balani em 23/10/2006 - 13:54h
Muito bom, bem explicado, vlw
#4Comentário enviado por texugo89 em 23/10/2006 - 15:23h
O artigo ficou muito bom, bem simples e objetivo...
Mas eu encontrei dois pequenos erros em WHILE:
original:
--------------------
Usando "while" ao invés de "for" fica assim:
i=1
while [ i -le 100 ]; do
echo "$i"
done
--------------------
como deve ficar:
--------------------
Usando "while" ao invés de "for" fica assim:
i=1
while [ $i -le 100 ]; do
echo "$i"
i=$((i+1))
done
--------------------
1. Alteração, como o i é uma variável ele tem que ser declarado juntamento com o $ ficando assim: $i
2. Alteração, no while você deve almentar o valor da variável $i, caso contrário você ficara em um looping eterno e o echo sempre imprimira 1. Para corrigir isso acrescente a seguinte linha após o echo: i=$((i+1))
Abraços,
## T3%U60 ##
#5Comentário enviado por _luks em 23/10/2006 - 21:15h
parabens,
esse foi um dos melhores tutoriais de sh que ja li na minha vida :D
#6Comentário enviado por removido em 24/10/2006 - 19:10h
nada de C nem coisas complicadas, use Shell! Adorei, sendo um entusiasta do Shell Linux! Parabéns!!
#7Comentário enviado por bryan em 25/10/2006 - 16:11h
Muito obrigado pelos elogios. =)
Me esforcei bastante para que ficasse o mais simples e direto o possível.
Obrigado ao texugo pela correção no exemplo do while, acabei me passando nessa... =)
#8Comentário enviado por douglasdiasn em 08/11/2006 - 10:25h
Muito Simples e Direto
Parabens...
#9Comentário enviado por xunil em 15/06/2007 - 17:10h
#12Comentário enviado por bryan em 08/04/2009 - 10:09h
Tu tens quatro problemas aqui.
Primeiro: se tu quiser usar a variável "tamanho_max" para comparação, tu terá que retirar o M do final, ficando:
tamanho_max="7,4"
Segundo: para garantir igualdade de grandezas na comparação (ou seja, garantir que tu irá comparar megabyte com megabyte), tu terá que alterar o teu comando du para isto:
t=$(/usr/bin/du -shm /home/)
Isto fará com que, no momento do cut para calcular o valor da variável "total", o resultado não tenha um "M " no final. Isto estava acontecendo no teu script original. Caso tu ateste que continua, é só adicionar mais um cut na linha:
total=$(echo $t |cut -f1 -d"/" | cut -f1 -d"M")
Terceiro: sobre teu echo... O shell script não sabe lidar com pontos flutuantes... o que tu deve fazer, para imprimir o valor correto, é usar o bc!
echo $total+1 | bc
Quarto: sobre o if... O -ge do comando test somente sabe compara inteiros. Tu terá que usar da seguinte forma:
if [ ${total} > ${tamanho_max} ] || [ ${total} = ${tamanho_max} ]
then
echo "maior igual"
else
echo "menor"
fi
Sim, tu terá que fazer dessa forma. Infelizmente, o comando test não reconhece ">=", daí tu tem que separar.
É isso. Agora tem que funcionar.
Abraços.
#13Comentário enviado por Narcochaos em 03/11/2013 - 20:23h
Parabéns man
Preferências de cookies
Usamos cookies essenciais para manter o site funcionando. Cookies de estatísticas e anúncios só serão carregados se você permitir.
abracos
Mlegidio