Embora muita das veze utilizados juntos, os termos shell
e bash
não são a mesma coisa.
O termo shell
refere-se a um programa que fornece uma interface de linha de comando para interagir com o Sistema Operacional.
O termo Bash (Bourne-Again Shell)
é um dos Unix/Linux shells mais comuns e utilizados.
flowchart LR
User --> Shell --> Kernel --> Hardware
Todo script bash possui a extensão .sh
e possui ashebang (#!)
na primeira linha do script.
shebang indica qual shell sera utilizado para executar o script.
Variáveis
As variáveis não devem possuir espaço entre o nome da variável, o simbolo de atribuição e o seu valor.
Também é possível realizar a expansão da variável:
É sempre uma boa ideia usar aspas “aspas” ao redor das variáveis para manter os espaços em branco e evitar problemas com variáveis vazias.
Todas as variáveis são consideradas globais. Variáveis locais são precedidas por local
.
É possível armazenar o valor de um comando dentro de uma variável, inserindo o comando entre $(...)
.
O Bash tambem possui variáveis nativas. São elas:
$?
: valor retornado pelo ultimo comando executado$$
: oPID
do script$0
: o nome do script$1
,$2
…$9
: argumentos que foram passados para o script, na sua execução$@
: todos os argumentos fornecidos ao script$#
: numero de argumentos fornecidas ao script
Expressões Aritméticas
Podemos utilizar a expressão $((...))
para realizar operações matemáticas:
Estrutura de controle, arrays e loops
Comando test
O comando test
do shell permite vários tipos de testes muito uteis com valores numéricos, strings e arquivos. Temos os seguintes operadores para o test
:
Números
-ne
: not equal (diferente)-lt
: less than (menor que)-gt
: greater than (maior que)-le
: less than or equal to (menor ou igual que)-ge
: greater than or equal to (maior ou igual que)-eq
: equal (igual a)
Strings
==
: string é igual!=
: string é diferente-n
: string é não nula-z
: string nula ou vazia
Arquivos
-d
: é um diretório-f
: é um arquivo comum-r
: o arquivo tem permissão de leitura-w
: o arquivo tem permissão de escrita-s
: o tamanho do arquivo é maior que zero (arquivo não vazio)
Ainda existem outros operadores para arquivos, porém esses são os mais usados.
IF
Aqui podemos utilizar if
como em outras linguagens. O if
possui a seguinte estrutura:
Tambem podemos usar a seguinte notação:
Tambem temos operadores logicos que podem ser usados em duas ou mais condições:
&&
: operador AND||
: operador OR
Arrays
A criação de um array segue a seguinte sintaxe:
Conseguimos acessar cada item do array através de indices, como em outras linguagens:
O comando seq
ou {inicio .. fim}
pode ser muito util se desejamos gerar uma sequência numérica:
FOR
A seguir, temos um exemplo de uso do for
:
Também podemos utilizar uma notação alternativa para o for
:
WHILE
Exemplo de uso do while
:
Se desejamos sair do while
, sem concluir sua condição, podemos usar o comando brake
.
Referências: