11 de dezembro de 2012

Linux - Fazer um IF no shell

if [ 2 -gt 1 ]; then echo "Sim, é verdade"; fi
# nesse script, testamos se o 2 é maior que o 1
# a condição sendo verdadeira, é mostrado "Sim, é verdade"
# o "-gt" é o mesmo que o comando ">" em outras linguagens

Listagem dos operadores:
-eq Igual
-ne Diferente
-gt Maior
-lt Menor
-o Ou
-d Se for um diretório
-e Se existir
-z Se estiver vazio
-f Se conter texto
-o Se o usuário for o dono
-r Se o arquivo pode ser lido
-w Se o arquivo pode ser alterado
-x Se o arquivo pode ser executado


Agora vamos fazer algo mais prático. Vamos supor que precisamos redimensionar imagens para 1000 pixels, porém as imagens que possuirem a altura menor que a largura devem ter 1000 pixels de altura, mantendo a largura proporcional e o mesmo com a largura, ou seja, se a largura for menor, ela deve ter 1000 pixels, mantendo a altura proporcinal.
#!/bin/sh 
#Primeiro pegamos todos os jpg com um "for"
for i in *.jpg; do 
  # O `identify -format "%w" "$i"` pega a largura da imagem
  # O `identify -format "%h" "$i"` pega a altura da imagem
  if [ `identify -format "%w" "$i"` -gt `identify -format "%h" "$i"` ]; then 
    # Redimensionando a altura para 1000 pixels
    convert "$i" -resize x1000 "$i"; 
  else 
    # Redimensionando a largura para 1000 pixels
    convert "$i" -resize 1000 "$i"; 
  # Fim do if
  fi; 
  # Mostra a imagem atual
  echo "$i"; 
# Fim do for
done



Fontes:
http://www.devin.com.br/shell_script/
http://help.lockergnome.com/linux/Easy-Method-Find-Dimensions-JPG-Image--ftopict380853.html

Nenhum comentário:

Postar um comentário