Shell Script 2 - Estruturas de Controle

Se você já leu o básico sobre Shell Script agora veremos as estruturas de controle do Shell Script.

Não vou explicar muito, apenas digite e veja o que acontece ;)

seq 10
seq 2 2 10
mkdir pasta; touch pasta/arquivo.txt; cd pasta; ls
if grep mm /etc/passwd; then echo 'ok'; else echo 'não'; fi
if who | grep regis; then echo regis está logado; else echo regis não está logado; fi

A seguir, usaremos o comando test para verificar se um arquivo existe.

# Verifica se o arquivo existe
if test -e $1; then cat $1; else echo Arquivo não encontrado; fi

Repare, no exemplo a seguir, que podemos substituir o comando test por um par de colchetes [ ].

# Verifica se uma pasta existe
if [ ! -d pasta42 ]; then echo 'Pasta não existe'; else echo 'Pasta já existe, veja:'; ls; fi
n1=1
n2=2
if [ $n1 -eq $n2 ]
then
    echo "n1 é igual a n2"
else
    echo "n1 é diferente de n2"
fi
n1=1
n2=2
if [ $n1 -ne $n2 ]
then
    echo "n1 é diferente de n2"
else
    echo "n1 é igual a n2"
fi
c=0; while [[ c -le 10 ]]; do echo "$c"; (( c++ )); sleep 0.5; done

Fibonacci Series

#!/bin/bash
c=0
a=1
b=1
read -p "Enter limit of fibonacci Series:" n
echo -n "$a "
echo -n "$b "
#Fibonacci series logic
while((c<n))
do
    c=$((a+b))
    echo -n "$c "
    a=$b
    b=$c
done
echo -e "\n"

$((a+b)) significa uma expansão aritmética.

For

for i in $(seq 10); do echo "$i"; sleep 0.5; done
itens="Um Dois Três Quatro Cinco"
for item in $itens; do echo $item; done
for ((i=1; i<=9; i++))
do
    echo -n "$i "
done
echo ""

Executando uma ação n vezes

for i in $(seq 10); do touch file$i.txt; done

Entrada de dados

read -p "Digite seu nome: " nome; echo "Bem-vindo $nome"

Função

#!/bin/bash

soma(){
    a=$1
    b=$2
    echo `expr $a + $b`
}

read -p 'Digite um número: ' x
read -p 'Digite outro número: ' y
soma $x $y

Leia mais em Shell Script 3 - Vários exemplos