Dicas úteis para Shell Script 2

Continuação de dicas úteis.


Dicas úteis para Shell Script 2

Digitar Script no terminal utilizando EOF (End Of File), serve para agilizar digitalização de qualquer coisa e já salvar via terminal, para finalizar, basta escrever em maiúsculo: EOF e pressionar [ENTER], pode-se usar EOS (End Of System) ou EOL (End Of Line) também e finalizar com EOS [ENTER] ou EOL [ENTER], da mesma forma ou diferente como apresentada abaixo

$ cat > condicao_ternaria.sh
#!/bin/bash
ping -c1 www.linux.org && echo 'Rede OK' || echo 'Rede Sujou.'
EOF

utilizando o EOS e uma condição ternária com somente mensagens

$ cat > condicao_ternaria_2_so_msg.sh << EOS
#!/bin/bash
ping -c1 www.linux.org 2>/dev/null 1>/dev/null && echo 'Rede OK' ||\ echo 'Rede Sujou.'
EOS

Criando um arquivo sh instantâneo, utilizando o EOL e o comando trap

$ sh << EOL
# funções tambem podem ser chamadas usando: function funcao(){}
# trap é o mesmo CTRL+C
function trataErro()
{
echo "Voce pressionou ctrl-c"
echo "Mas nao posso terminar agora"
}

trap trataErro SIGINT SIGTERM

for i in {1..10}
do
sleep 1
echo "Dormindo"
done
EOL

Truques para tratamento de variáveis em shell script

As variáveis do sistema servem para armazenar algum valor (como toda variável), mas existem alguns recursos interessantes e úteis no modo de usar tais variáveis. O que aprendemos em alguns tutoriais, é que para declarar uma variável do sistema, fazemos:

NOME=”VALOR” Aqui podemos usar valores de outras variáveis
NOME=’VALOR’ NOME terá o valor igual a VALOR
NOME=COMANDO NOME terá o valor da saída de comando

Isto é o básico, agora teremos algumas coisas mais interessantes:

  • Retirar parte final de uma string
VAR="minha_foto.jpeg"
echo ${VAR%.jpeg}

Saída: minha_foto

Como podemos ver, “.jpeg” será excluído. Indicamos o que será excluído depois do caracter ‘%’.

  • Retirar da variável a parte inicial do valor dado
VAR="http://www.terminalroot.com.br"
echo ${VAR#http://}

Saída: www.terminalroot.com.br

Indicamos o que será excluído depois do caracter ‘#

  • Mostrar tudo depois de uma certa posição
VAR="http://www.g00gle.com"
echo ${VAR:7}

Saída: www.g00gle.com

Depois do ‘:’ indicamos o índice. Como é em C, o primeiro índice é 0, o segundo é 2 …, o oitavo é 7 … etc.

  • Mostrar entre alguns caracteres
VAR="123456789"
echo ${VAR:2:5}

Saída: 34567

Primeiro, faz-se o índice 2, que começa no caracter ‘3’. No índice 5, a contagem já começa no índice 2 (5 caracteres a partir do índice 2), aí morre no caracter ‘7’.

  • Elimina o caracter mostrado e tudo a ESQUERDA
VAR="daemonio@terminalroot"
echo ${VAR#*@}

Saída: terminalroot

Bom, aqui indicamos o caracter a ser deletado e tudo a sua esquerda, depois da string “#*”.

  • Elimina o caracter mostrado e tudo a DIREITA

Como o mundo não é feito somente de canhotos,

VAR="daemonio@terminalroot"
echo ${VAR%@*}

Saída: daemonio

Já aqui, indicamos o caracter a ser deletado e tudo a sua direita, entre a string “%*”.

  • Excluir até um certo valor

Esta daqui é igual ao de cima, só que podemos indicar strings ao invés de somente um caracter.

EXC=":senha"
VAR="root:senha:/bin/bash"
echo ${VAR%%$EXC*}

Saída: root

O que será excluído tem que ficar entre “%%” e ‘*’.

  • Excluir de um certo valor até o final

Agora é ao contrário, exclui até o final.

EXC="senha:"
VAR="root:senha:/bin/bash"
echo ${VAR##*$EXC}

Saída: /bin/bash

O que será excluído deve ficar depois do “##*”.

  • Troca-troca (de strings :-)

Isto na verdade funfa que nem o comando sed.

VAR="c1:c2:c3"
echo ${VAR/:/x}

Saída: c1xc2:c3

Troca a primeira ocorrência de ‘:’ por ‘x’, para trocar tudo

echo ${VAR//:/x}

Usa-se duas barras.

Nada impede de trocar por strings:

echo ${VAR//:/-CC-}

Saída: c1-CC-c2-CC-c3

  • Mostrar o comprimento da variável:

VAR=”tenho 19 caracteres” echo ${#VAR}

Saída: 19

  • Listar nomes de variáveis

Para listar todas as variáveis de seu sistema que contenha tal nome, faça:

echo ${!va*}

Mostrará todas as variáveis que começam com “va”. Aí pode sair: vaca, vacuo, vassoura, etc.

  • Um ou outro
echo ${VAR:-"eu não existo"}

Saída: eu não existo

Se VAR for nula, mostra “eu não existo”, se não for nula, mostra o conteúdo dela.

VAR="eu existo"
echo ${VAR:-"eu não existo"}

Saída: eu existo

Agora, VAR não é nula, por isto mostra o conteúdo dela.

Veja a parte 1 dos Exmplos Úteis

Dicas úteis para Shell Script 1

Fonte: http://www.vivaolinux.com.br/dica/Truques-para-tratamento-de-variaveis-em-shell-script


shellscript bash


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!