O documento apresenta uma introdução aos shells e shell scripts, abordando tópicos como: o que são shells, os principais tipos de shells existentes, o que são shell scripts e suas principais características, sintaxe básica de shell scripts incluindo variáveis, comandos, estruturas de controle e funções. Também apresenta exemplos de uso de recursos como redirecionamento, caracteres curinga e manipulação de parâmetros.
12. ...rápido para prototipar
...fácil
...ótimo para automatizar tarefas
...ótimo para executar tarefas agendadas
...ótimo para iniciar aplicativos
...ótimo para instalar software
...
23. Curinga Padrão
* Zero ou mais caracteres
? Um caractere qualquer
[abc] Um caractere que esteja na lista
[!abc] Um caractere que não esteja na lista
[a-c] Um caractere que esteja no range
[!a-c] Um caractere que não esteja no range
{pdf,jpg} Palavra que esteja na lista
24. $ ## Expansão dos curingas
$ ls *
a.jpg a.pdf b.pdf cd.pdf c.pdf
$ ls ?.pdf
a.pdf b.pdf c.pdf
$ ls [abc].pdf
a.pdf b.pdf c.pdf
$ ls [!a].pdf
b.pdf c.pdf
$ ls a.{pdf,jpg}
a.jpg a.pdf
29. $ # A passagens de parametros dos scripts
$ # é feita de maneira posicional
$
$ ./myscript.sh parametro1 paramentro2
30. #!/bin/bash
# O recuperação dos valores passados
# como parametro é feito através
# de variáveis especiais
echo $1 # 1° parametro
echo $2 # 2° parametro
echo $11 # 1° parametro seguido de 1
echo ${11} # 11° parametro
31. #!/bin/bash
# Ainda existem variáveis para acessar
# os parametros de várias formas
echo $* # parametros separados pelo $IFS
echo $@ # parametros “p1” “p2”
echo $# # numero de parametros
32. #!/bin/bash
# O if verifica o exit status do comando
if grep "denis" texto.txt
then
echo "Achei ele"
else
echo "Ele escapou"
fi
33. #!/bin/bash
# Para fazer comparações use o builtin
# command test...
a=1
if test $a == 1
then
echo "É igual"
else
echo "É diferente"
fi
34. #!/bin/bash
# ... ou sua sintaxe com [ ]
a=1
if [ $a == 1 ]
then
echo "É igual"
else
echo "É diferente"
fi
35. #!/bin/bash
# O for funciona como um for each, e separa
# os elementos usando o conteúdo do $IFS
# $IFS é uma variável de ambiente que contém
# o(s) separador(es) padrão(ões)
for number in 1 2 3 4 5 6 7 8 9 10
do
echo $number
done
36. #!/bin/bash
# Se você quisesse iterar sobre uma grande
# sequência de números
for number in $(seq 100)
do
echo $number
done
37. #!/bin/bash
# Nas versões mais novas do Bash é possível
# usar uma sintaxe que lembra a do C.
for ((number = 0; number < 10; number++))
do
echo $number
done
38. #!/bin/bash
# CSV Parser de pobre
comma=','
new_line='
'
old_IFS=$IFS
IFS=$new_line
for line in $(cat cars.csv); do
IFS=$comma
for item in $line; do
echo -ne "$itemt"
done
echo “”
done
IFS=$oldIFS
39. #!/bin/bash
# O while funciona como o if e executa
# enquanto o comando verificado retorna exit
# status 0
while ping -c 2 www.google.com
do
echo “Sim, temos internet!!”
done
40. #!/bin/bash
# O until é muito semelhante ao while mas
# executa enquanto o exit status é diferente
# de 0
until ping -c 2 www.google.com
do
echo "Ainda estamos sem internet 8("
done
41. #!/bin/bash
# O case permite vericar o conteúdo de uma
# variável várias vezes
case $SO in
linux)
echo "É Linux"
;;
w*)
echo "Isso não é um bom sinal"
;;
*)
echo "Sistema não reconhecido"
;;
esac
42. #!/bin/bash
# A declaração de funções é feito com a
# palavra reservda function
function nome_da_funcao(){
comando
...
}
43. #!/bin/bash
# A invocação de funções e a
# passagens de parâmentros é
# feito como os scripts
funcao parametro1 parametro2
44. #!/bin/bash
function map(){
func=$1
for item in $2; do
$func $item
done
}
function reduce(){
func=$1
acumulador=$(cut -d ' ' -f 1 <<< "$2")
resto=$(cut -d ' ' -f 2- <<< "$2")
for item in $resto; do
acumulador=$($func $acumulador $item)
done
echo $acumulador
}