Linux script funções aninhadas

Linux shell script funções 11042020

Funções aninhadas. Uma das características mais interessantes das funções é que elas podem se chamar e também outras funções. Uma função que se chama é conhecida como função recursiva. O exemplo a seguir demonstra o aninhamento de duas funções:

#!/usr/bin/env bash

# Nome: chama_funcao_de_outra.sh

# Chamando uma função de outra.

clear

numero_um () {
echo “Esta é a primeira função falando …”
numero_dois
}

numero_dois () {
echo “Esta é a segunda função falando …”
}

# Chamando a função um.

numero_um

# fim do script

Para treinar seria legal tentar escrever pelo menos um shell script teste por dia. Nestes shell scripts haveriam funções e loops por exemplo. Na falta de idéias vale tentar escrever um script antigo de uma maneira diferente.

Tentar colocar funções em shell scripts. Dentro de uma função um loop? Uma função que converte jpg para png:

#!/usr/bin/env bash

########################

# Nome: funcao_conv_jpg_2_png.sh
# OBS:
# Sempre efetue um backup de todas as suas imagens antes de utilizar qualquer
# programa de otimização, pois, caso algo ocorra inesperadamente você tem a
# possibilidade de reverter rapidamente os arquivos para os arquivos originais.
# Pode ser que os utilitários alterem as permissões do arquivos, certifique-se
# sempre que a imagem está disponível no navegador.
# Para funcionar este shell script precisa dos programas exiftool,
# jpegoptim, optipng

########################

# —————————————- #

# primeiro sobreescrever metadata

read -p “Sobreescrever metadata de jpg? Tecle Enter para continuar ou Ctrl+c para sair: ”

echo ‘Função 1 sobreescrever:’

function sobreescrever () {

exiftool -all= -overwrite_original -ext jpg .
sleep 4

}

sobreescrever

echo ‘*** Função 1 executada ***’

# —————————————- #

read -p “Otimizar jpg? Tecle Enter para continuar ou Ctrl+c para sair: ”

echo ‘Função 2 otimizar jpg:’

function otimizar () {

jpegoptim *.jpg

jpegoptim *.JPG

optipng *.JPG

sleep 4

}

otimizar

echo ‘*** Função 2 executada ***’

# —————————————- #

read -p “Converter jpg para png? Tecle Enter para continuar: ”

echo ‘Função 3 converter jpg para png’

# OBS: dentro da função 3 é executado um loop for

function converter () {

for image in *.jpg; do convert “$image” “${image%.jpg}.png”; done

sleep 3

}

converter

echo ‘*** Função 3 executada ***’

# —————————————- #

read -p “Sobreescrever metadata e otimizar png? Tecle Enter para continuar: ”

echo ‘Função 4 sobreescrever metadata de png’

function metapng () {

exiftool -all= -overwrite_original -ext png .
sleep 3
optipng *.png
optipng *.PNG
sleep 3

}

metapng

echo ‘*** Função 4 executada ***’

# —————————————- #

read -p “Listar 10 arquivos do diretório que foram alterados? Tecle Enter para continuar: ”

echo ‘Função 5 listar os 10 primeiros’

function listahead () {

ls -t | head

}

listahead

echo ‘*** Função 5 executada ***’

echo ‘Feito!’

# fim do script

Deixe um comentário