Shell Script
Leonardo Menezes Vaz
<[Link]@[Link]>
Tópicos
● Hello World!!
● Variáveis
● Condicionais
● Loops
● Funções
● Referências
Hello World!!
#!/bin/bash
#
# Hello World - Imprime mensagem e sai. :o)
#
# Changelog:
# * Qua Abr 07 2010 Fulano <fulano@[Link]> - 0.1
# - Versao inicial
#
#--------------------------------------------------
echo -en "Hello World!!\n"
Executando um Script...
[fulano@box ~]$ chmod +x [Link]
[fulano@box ~]$ ./[Link]
Hello World!!
Variáveis
NOME=HelloWorld
MENSAGEM="Hello World"
VERSAO="0.1"
BASEDIR=/usr/share/
USUARIO=`whoami`
VERBOSE=0
PROGDIR=${BASEDIR}/${NOME}-${VERSAO}
DATA=$(date +%Y%m%d)
Condicionais - if
if [ <CONDICAO> ]; then
COMANDOS...
else
COMANDOS...
fi
Exemplo prático...
DIR=/tmp/foo
echo ">> Verificando ${DIR}"
If [ -d "${DIR}" ]; then
echo " Diretorio ${DIR} existe..."
else
echo " Diretorio ${DIR} nao existe..."
fi
Loops - for
for VAR in <LISTA DE ELEMENTOS> ; do
COMANDOS...
done
Exemplo prático...
echo ">> Aguarde..."
for count in 1 2 3 4 5 ; do
sleep 1;
echo -en "${count} "
done
echo -en "\n>> Pronto...\n"
Loops - while
while <CONDICAO> ; do
COMANDOS...
done
Exemplo prático...
SAIR=0
while [ "${SAIR}" -ne 1 ] ; do
echo "Deseja sair do programa? S / N"
read opcao
[ "${opcao}" = "S" ] && SAIR=1
done
Condicionais - case
case "$VAR" in
Valor A )
COMANDOS...
;;
Valor B )
COMANDOS...
;;
*)
COMANDOS...
;;
esac
Exemplo prático...
echo "Escolha uma opcao: A ou B"
read OPT
case "${OPT}" in
A)
echo "Voce escolheu A..."
;;
B)
echo "Voce escolheu B..."
;;
*)
echo "Opcao invalida..."
;;
esac
Funções sem retorno
function nome_da_funcao () {
COMANDOS...
}
Exemplo prático...
# Exibe mensagem e sai, sem variavel de retorno
function exibe_erro () {
if [ $# -bt 0 ]; then
echo "$* "
exit 1
fi
}
Funções com retorno
function nome_da_funcao () {
COMANDOS...
[ return CODIGO ]*
}
* opcional
Exemplo prático...
# Verifica se o diretorio passado como parametro existe,
# retonando “0” se ele existir ou “1” se ele nao existir
function verifica_dir () {
[ -z $1 ] || _exibe_erro "Faltou informar o diretorio"
if [ -d ${1} ]; then
return 0
else
return 1
fi
}
Usando funções...
verifica_dir "/tmp/foo"
if [ $? -eq "0" ]; then
echo "Diretorio existe"
else
echo "Diretorio nao existe"
fi
Referências na Internet
Recursos sobre Shell Script
[Link]
Canivete do Shell Script
[Link]
Referências bibliográficas
Livro Programação Shell Linux
Julio Cezar Neves – Editora BRASPORT
Shell Script Profissiona
Aurelio Marinho Jargas – Editora Novatec
Expressões Regulares: Uma abordagem divertida
Aurelio Marinho Jargas – Editora Novatec