Escolar Documentos
Profissional Documentos
Cultura Documentos
Shell script
Origem: Wikipédia, a enciclopédia livre.
A primeira linguagem de script em Shell, criada por Stephen R. Bourne, veio a ser implementada
na versão 7 do Unix Shell e ficou conhecida como Bourne Shell (sh). Após a sua implementação,
diversas outras linguagens de scripts baseadas no sh vieram, tais como Korn Shell, e DMERT
Shell, sendo que, em 1989, foi lançada a linguagem que se tornou Shell de login padrão em
diversas distribuições Linux, a GNU Bash ou simplesmente Bash.
Funcionalidades e Capacidades
Selecionar Shell
Para selecionar qual Shell será utilizado, use a combinação de hashtag (#) mais exclamação (!) e
caminho do executável na primeira linha do arquivo script, isso vem a ser conhecido como
Shebang.
- Para declarar que o script deve ser interpretado por Bourne Shell (sh) a primeira linha será
escrita da seguinte forma:
1 #!/bin/sh
- Para declarar que o script deve ser interpretado por Bourne-Again shell (Bash) é recomendável a
utilização do comando env, pelo fato que apesar de o Bash já vir instalado em muitas distribuições
Linux, não sabemos se ele estará em todas elas no mesmo diretório /bin/, então use a seguinte
forma:
https://pt.wikipedia.org/wiki/Shell_script 1/8
31/03/2023, 05:36 Shell script – Wikipédia, a enciclopédia livre
1 #!/usr/bin/env bash
Comentários
Os comentários nas linguagens Bourne Shell (sh) e Bourne-Again Shell (bash) serão utilizados
hashtag (#), Exemplo de comentários:
#Comentário
#- Segundo comentário
# // [ Terceiro comentário ] //
Variáveis
Como qualquer outra linguagem de programação conhecida, um script em Shell também possui
suporte a variáveis. Em uma breve explicação uma variável é um nome/objeto simbólico ao qual
podemos atribuir valores, ler ou manipular o conteúdo. Para mais informações, leia-me. Os scripts
em Shell podem lidar com diferentes tipos de variáveis sem precisar definir o tipo:
MENSAGEM_DATA=1979
MENSAGEM_NOME="Bourne Shell"
mensagem_tipo1="Unix Shell"
mensagem_autor="Stephen Bourne"
MENSAGEM=ola
_MENSAGEM2=oi-2.020
Variáveis Pré-definidas
Variáveis Globais
Variáveis globais ou variáveis de ambiente globais, são variáveis criadas/definidas com o comando
export e podem ser utilizadas por múltiplos scripts em Shell. Um exemplo é a variável de ambiente
LANG (Pré-definida em diversas distribuições Linux), Podendo ser acessada por diversos arquivos
de script em Shell.
https://pt.wikipedia.org/wiki/Shell_script 2/8
31/03/2023, 05:36 Shell script – Wikipédia, a enciclopédia livre
A duas formas de criar uma variável global, exportar uma variável pré definida ou definir quando
for exportar:
VARIAVEL1=Teste
export VARIAVEL1
# Define e exporta com export
export VARIAVEL2=Teste
Array
Bourne Shell (sh) não é compatível com variáveis tipo array, mas Bourne-Again Shell (Bash) sim,
exemplo simples de implementação:
1 #!/usr/bin/env bash
2 meu_array=(1 2 3 4 5 6 7 8 9)
3 meu_Array=("abc" "def" "ghi")
Array Associativo
1 #!/usr/bin/env bash
2 declare -A dicionario
3 dicionario["Brasil"]="Brasília"
4 dicionario["Goiás"]="Goiânia"
5 dicionário["São Paulo"]="São Paulo"
6 dicionario[Sergipe]=Aracajú
7 echo ${dicionario["Brasil"]}
Chamar variáveis
Para chamar variáveis utiliza-se o sinal de cifrão $var. O cifrão ($) também é bastante utilizado em
script sh, para executar programas externos exemplo: var=$(expr 2 + 2) irá armazenar a
saída do programa expr. E o cifrão mais chave ${var} é comum ser utilizado das seguintes
maneiras:
Para acessar posições em um array ${var[1]}. (obs.: não funciona para sh, apenas para Bash)
E também para substituir o valor de uma variável se a mesma não possuir um valor: ${var:-nome}
- ${var:=nome} - ${var:-$(programa)} dessas maneiras irão substituir pelo que for passado
depois de :- ou :=, exemplo em código:
https://pt.wikipedia.org/wiki/Shell_script 3/8
31/03/2023, 05:36 Shell script – Wikipédia, a enciclopédia livre
O código acima irá pedir para o usuário digitar um nome, caso digite irá utilizar echo para
imprimir o nome digitado na saída padrão, caso contrário irá substituir pela saída do comando
whoami, ao invés de substituir pela saída de um comando, você pode substituir por outro valor
exemplo: ${myname:=Bourne Shell}.
Remover Variáveis
Para remover uma variável, utiliza-se o comando unset + nome da variável, você pode também
remover múltiplas variáveis basta separá-las por espaços.
unset VAR
unset VAR1 VAR2 VAR3 VAR4
If
if [ $1 = $2 ]; then
echo "Parametro 1=$1 é igual a 2=$2."
fi
If-else
Declaração if else para scripts em bash ou sh, há diversas formas diferentes, tenha cuidado para
não esquecer os espaços entre os colchetes eles são muito importantes:
1 if [ $1 = $2 ]; then
2 echo "Parametro 1 ($1) é igual a 2 ($2)."
3 else
4 echo "Parametro 1 ($1) não é igual a 2 ($2)."
5 fi
Mas, existe uma abreviação que também é muito utilizada que é menor e muito boa para teste de
linha única:
1 [ $1 = $2 ] && { echo "Parametro 1 ($1) é igual a 2 ($2)."; exit 0; } || { echo "Parametro 1 ($1) é
diferente de 2 ($2)."; exit 0; }
Else-if
https://pt.wikipedia.org/wiki/Shell_script 4/8
31/03/2023, 05:36 Shell script – Wikipédia, a enciclopédia livre
if [ $3 ]; then
echo "$3"
elif [ $2 ]; then
echo "$2"
else
echo "$1"
fi
Case
case "$var" in
valor)
;;
esac
Expressões Regulares
Scripts em Bash possui compatibilidade com Expressões Regulares, algo que scripts em Bourne
Shell (sh) não reconhecem:
1 #!/usr/bin/env bash
2 [[ $1 =~ ^sh|SH$ ]] && { echo "$1 - Bourne Shell"; }
Operadores
Existem diversos operadores para cada Shell script, mas aqui serão passadas informações
especificamente sobre Bourne shell por ser mais comum e muitos outros shell são similares. Os
seguintes operadores serão explicados aqui:
- Operadores Aritméticos
- Operadores Booleanos
- Operadores Relacionais
- Operadores de String
https://pt.wikipedia.org/wiki/Shell_script 5/8
31/03/2023, 05:36 Shell script – Wikipédia, a enciclopédia livre
Loop
For
Esse tipo de loop funciona da mesma forma para ambos Bash e sh.
While
Existem diversas formas de utilizar o loop while para scripts em Bash ou sh:
while [ -z $a_input ]; do
read -p "Enter para continuar ou digite qualquer coisa para sair: " a_input
done
while [ -z $b_input ]; do read -p "Enter para continuar ou digite qualquer coisa para sair: " b_input;
done
Funções
O scripts em Shell também aceitam funções. Bash e sh aceitam um mesmo padrão de funções,
mas o Bash também aceita um outro formato que o sh não reconhece. Ambos formatos são
mostrados abaixo:
Para chamar uma função basta digitar o nome da função em uma linha após a declaração da
função como se fosse um comando. Exemplo:
nova_função() {
echo "Olá, Mundo!"
https://pt.wikipedia.org/wiki/Shell_script 6/8
31/03/2023, 05:36 Shell script – Wikipédia, a enciclopédia livre
}
nova_função
Status de saída
O status de saída de um comando executado são valores, retornados pela chamada do sistema
waitpid ou função equivalente. Os valores para o status de saída ficam entre 0 e 255; Os status de
saída dos Shell builtins e comandos compostos também são limitados a esse intervalo. Sob certas
circunstâncias, o shell usará valores especiais para indicar modos de falha específicos.
Para os propósitos do Shell, um comando que sai com um status de saída igual a 0 (zero) significa
que a execução do script foi bem-sucedida. Você pode ver os exemplos passados anteriormente
onde a última linha do script o status de saída é 0 (zero). Já um status de saída diferente de zero
indica falha. Esse esquema aparentemente contra-intuitivo é usado para que haja uma maneira
bem definida de indicar sucesso e uma variedade de maneiras para indicar vários modos de falha.
Quando um comando termina em um sinal fatal cujo número é N, o Bash por exemplo usa o valor
128+N como status de saída. Se um comando não for encontrado, o processo filho criado para
executá-lo retornará um status 127. Se um comando for encontrado, mas não for executável, o
status de retorno será 126. Um exemplo de uma implementação simples de status de saída:
O próximo exemplo irá checar se um comando não foi executado com sucesso:
Exemplos de uso
Para criar um Shell script você precisa saber, antes, qual linguagem de script irá utilizar . Se for
utilizar Bash, por exemplo, basta criar um arquivo com a extensão .sh e colocar na primeira linha
desse arquivo o shebang para bash.
Para distribuições com base Linux, abra o terminal e digite os seguintes comandos:
E depois de criado você deve tornar o arquivo executável, utilizando o seguinte comando: chmod
u+x novo_script
Para verificar parâmetros de linha de comando com Bourne shell, há apenas uma maneira
recomendável: utilizar loop + case + shift. Já com Bash há mais de uma, pelo fato de o Bash
suportar expressões regulares.
https://pt.wikipedia.org/wiki/Shell_script 7/8
31/03/2023, 05:36 Shell script – Wikipédia, a enciclopédia livre
while [ $# -gt 0 ]; do
case "$1" in
version | -v) echo "Release v0.1.0 - from Wikipedia.org";;
*) echo "$0: Este parâmetro '$1' não foi reconhecido, saindo...";exit 1;;
esac
shift
done
O loop while acima irá iniciar se e somente se houver um parâmetro. O case irá analisar os
parâmetros e o shift irá mudar de parâmetros se houver mais de um e terminar o loop caso não
haja mais nenhum. Caso você tenha muitas opções para o seu script deixe help e version sempre
como as primeiras e utilize break para terminar o loop.
#!/usr/bin/env bash
cd /tmp
find . -type f -mtime +30 -delete
Veja também
Expressões Regulares
Bourne shell
Bash
Korn shell
Unix versão 7
Shebang
Caracteres-curinga
Fluxos padrão
Referências
Ligações externas
Obtida de "https://pt.wikipedia.org/w/index.php?title=Shell_script&oldid=64703986"
https://pt.wikipedia.org/wiki/Shell_script 8/8