Escolar Documentos
Profissional Documentos
Cultura Documentos
Shell Tutorial Fácil
Shell Tutorial Fácil
SHELL SCRIPT
Agenda
Introduo
Funes de Terminal
Apresentao em mensagens
Variveis
Funes
Introduo
Finalidade.
Funcionalidade do Shell
Introduo
Tipos de SHELL
sh - POSIX SHELL
csh - C SHELL
Ambiente do Usurio
Nome do Usurio
Identificaao do usurio
Diretrio Home
Caixa postal
Path
Tipo de Terminal
Logon no Sistema
Shell iniciado
Solicita o
nome do
usurio
Executa
o shell
Solicita a
senha do
usurio
Executa o
/etc/profile
Logon no Sistema
No
Login
vlido?
Executa o
.profile no
diretrio home
Sim
Coloca o usurio
no diretrio
home
Apresenta
o prompt
da console
Shell Script
Shell Script
Economizar tempo
Desenvolvimento rpido
Shell Script
Executar o Script
. arquivo_do_script
bash arquivo_do_script
chmod +x arquivo_do_script
ou
#!/bin/bash -x
Metacaracteres
Metacaracter
O que faz
*
Substitui qualquer string ou grupo de caracteres
?
Substitui um nico caracter
[....]
Substitui qualquer dos caracteres contidos entre os colchetes
Exemplo
ls *
ls a*
ls *.c
ls ut*.c
ls ?
ls fo?
ls [abc]*
ls [a-d]*
Significado
Mostrar todos os nomes de arquivos
Mostrar todos os nomes de arquivos
a
Mostrar todos os nomes de arquivos
.c
Mostrar todos os nomes de arquivos
letras ut e possuem a extenso .c
Mostrar todos os nomes de arquivos
Mostrar todos os nomes de arquivos
iniciam com as letras fo.
Mostrar todos os nomes de arquivos
Mostrar todos os nomes de arquivos
Execuo de Comandos
$ ls
$ date
$ who
$ ls;date;who
Redirecionamento de E/S
Redirecionamento de E/S
Redirecionamento de E/S
Redirecionamento de E/S
<
> e de
Redirecionamento de E/S
>>
Exemplo:
> saida.txt
Redirecionamento de E/S
ls -la *.wxs
Exerccio 1
PIPELINES
PIPELINE
Exemplo de utilizao:
wc -l saida.txt
ls -la | wc -l
Exerccios 2
Filtros
Apresentao de Mensagens
Echo - Opes
\a alert (bell)
\b backspace
\n new line
\r carriage return
\t horizontal tab
\\ backslash
Exemplo:
Variveis
Letras
Nmeros
Sublinhados
Variveis
var=estaeumastring
var=1
Variveis
Exemplo
unset var
echo $var
Variveis
var=
ou
var=
echo $var
set | more
ou set | pg
Variveis
BASH=/bin/bash
BASH_VERSION='2.05b.0(1)-release'
HOME=/root
HOSTNAME=pintagol.fespnet
HOSTTYPE=i486
Variveis
Exerccio 3
Realizando Clculos
expr 2 + 2 (soma)
expr 2 3 (subtrao)
expr 2 \* 3 (multiplicao)
A Crase
A soma de
Exerccio 4
Variveis de Usurio
Variveis de Usurio
Variveis de Usurio
Exemplo: export V
Variveis de Ambiente
Variveis de Processo
Variveis de Processo
Exemplos
ls -la
echo $?
(volta 0)
ls -la *.xxxx
echo $?
(volta 1 erro)
ls -la &
echo $!
(volta 234)
echo $$
ps
Variveis de Processo
#!/bin/bash
exit 3
No prompt de comando aps a execuo no script acima.
$ echo $?
Variveis Argumento
#!/bin/bash
echo Voce passou $# parametros
echo O parametro zero o nome da rotina que e $0
echo O primeiro parametro $1
echo O segundo parametro $2
echo A lista de parametros $*
Salvar o script com o nome exec0.sh
Executar com o seguintes parametros
bash exec0.sh um dois tres 4 5 6 7 8 9 0 1 2 3
Shift de Argumentos
Shift de Argumentos
#!/bin/bash
echo "Voce passou $# parametros"
echo "O parametro zero o nome da rotina que e $0"
echo "O primeiro parametro $1"
echo "O segundo parametro $2"
echo "Estou executando o SHIFT" nas variveis
shift
echo "Agora tenho $# parametros"
echo "O parametro zero o nome da rotina que e $0"
echo "O primeiro parametro $1"
echo "O segundo parametro $2
Salvar o script com o nome exec1.sh
Executar com o seguintes parametros
bash exec1.sh um dois tres 4 5 6 7 8 9 0 1 2 3
Comando Read
read var
Comando read
#!/bin/bash
echo -n "digite uma variavel: "
read var1 var2 var3
echo "Primeira variavel --> $var1"
echo "Segunda variavel --> $var2"
echo "Terceira variavel --> $var3
Salvar o script com o nome exec2.sh
Executar o script
Controle de Fluxo
Deciso
if
case
Repetio
while
for
Condicional
if [ condio ]
then
Se condio verdadeira execute todos os
comandos at fi
...
fi
** condio a comparao entre dois valores
** observar sempre o formato [xcondiox], onde x
corresponde a um espao.
Condicional
if [ condition ]
then
se condio for verdadeira
execute todos os comandos at o else
else
se condio no verdadeira
execute todos os comandos at o fi
fi
Condicional
if condition
then
if condition
then
.....
do this
else
....
do this
fi
else
.....
do this
fi
Condicional
if condition
then
se condio verdadeira
execute todos os comandos at
elif condition1
then
se condition1 verdadeiro
execute todos os comandos at
elif condition2
then
se condition2 verdadeiro
execute todos os comandos at
else
Nenhuma das condies acima
verdadeiras
execute todos os comandos at
fi
elif
elif
elif
so
fi
Operadores de Comparao
Numricos
-eq
-ne
-le
-lt
-ge
-gt
igual
diferente
menor ou igual
menor que
maior ou igual
maior que
Alfanumrico
=
igual
!=
diferente
-z
string sem contedo
-n
string com contudo
Operadores de Comparao
Comparao matemtica
5 == 6
5 != 6
5<6
5 <= 6
5>6
5 >= 6
Comparao em Script
if [ 5 -eq 6 ]
if [ 5 -ne 6 ]
if [ 5 -lt 6 ]
if [ 5 -le 6 ]
if [ 5 -gt 6 ]
if [ 5 -ge 6 ]
Operadores de Condio
Comparao entre String
Significado
if
if
if
if
[
[
[
[
string1 = string2 ]
string1 != string2 ]
-z string1 ]
-n string1 ]
Significado
o arquivo no est vazio
um arquivo normal e no diretrio
um diretrio
um arquivo para gravao
um arquivo read-only
um arquivo executvel
Operadores Lgicos
Operadores lgicos so utilizados para combinar duas ou mais
condies
Operador Lgico
Significado
! expresso
expresso1 -a expresso2
expresso1 -o expresso2
Repetio - for
for variable in lista_de_valores
do
Executa todos os comandos para cada elemento da
lista.
Done
Exemplo
#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 0
do
echo $i
done
lista="1 2 3 4 5 6 7 8 9 0"
for i in $lista
do
echo $i
done
Repetio - for
for (( expr1; expr2; expr3 ))
do
repete todos os comandos enquanto
expr2 seja verdadeiro
done
Exemplo:
#!/bin/bash
for ((i = 0; i<= 5; i++ ))
do
echo $i
done
Repetio - while
while [ condio ] ou [ true ] ou [ : ]
do
Todos os comandos sero executados enquanto
a condio verdadeiro.
done
command1
command2
command3
..
Exemplo:
#!/bin/bash
cont=0
while [ $cont -le 40 ]
do
echo $cont
cont=`expr $cont + 1`
done
Repetio
Repetio - Continue
#!/bin/bash
numero=0
while [ $numero -lt 11 ]
do
echo -n "Digite um numero de 0 a 10: "
read numero
if [ "$numero" -gt 10 ]
then
continue
fi
if [ "$numero" -lt 11 ]
then
echo "Voce digitou $numero"
fi
done
echo final de procedimento
No exemplo acima, todo nmero digitado entre 0 e 10 ser
apresentado na tela e o lao ser continuado. Quando for
digitado um nmero maior que 10, no meio do procedimento, o
lao desviado para o incio e a seguir encerrado.
Repetio - break
#!/bin/bash
numero=0
while [ $numero -lt 11 ]
do
echo -n "Digite um numero de 0 a 10: "
read numero
if [ "$numero" -gt 10 ]
then
break
fi
if [ "$numero" -lt 11 ]
then
echo "Voce digitou $numero"
fi
done
echo final de procedimento
No exemplo acima, todo nmero digitado entre 0 e 10 ser
apresentado na tela e o lao ser continuado. Quando for
digitado um nmero maior que 10, no meio do procedimento, o
lao encerrado.
Execuo condicional
comando1 || comando2
Execuo Condicional
Funes
Funes
#!/bin/bash
function mostra_valores()
{
echo "Valor1: $var1"
echo "Valor2: $var2"
return
}
function mostra_soma()
{
echo "$var1 + $var2 = `expr $var1 + $var2`"
return
}
# Call the function
clear
echo -n "Valor 1: "
read var1
echo -n "valor 2: "
read var2
mostra_valores; mostra_soma
Funes Passagem de
Parametros
#!/bin/bash
function demo()
{
echo "Todos os argumentos da funo demo(): $*"
echo "Primeiro argumento - $1"
echo "Segundo argumento - $2"
echo "Terceiro argumento - $3"
return
}
#
# Chamada da funo
#
demo -f foo bar
Retorno de Valor
#!/bin/bash
function cal()
{
n1=$1
op=$2
n2=$3
ans=0
if [ $# -eq 3 ]; then
ans=`expr $n1 $op $n2 ))
echo "$n1 $op $n2 = $ans"
return $ans
else
echo "Funo cal necessita de trs argumentos"
fi
return
}
#chamada de funo
cal 5 + 10
cal 10 - 2
cal 10 / 2
echo $?
Funes - Observao
RESPOSTAS
Exerccio 1.
find / -amin 10 > hoje.txt &
find / -iname "*.cfg" > cfg.txt &
cat < hoje.txt > total.txt
cat < cfg.txt >> total.txt
Exerccio 2.
ls -la | more
who | sort
who | wc -l
cat < /etc/passwd | sort
cat < /etc/passwd | sort > cadastro.txt
who | grep raul
Respostas
Exerccio 3
X=10
Echo $X
Echo $XN
Unset X
Unset XN
Respostas
Exerccio 4.
echo `expr 15 % 4`
echo `expr 15 / 4`
X=`expr 15 % 4 `
XY=`expr 15 / 4 `