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