Skip to content

Instantly share code, notes, and snippets.

@nicolas-oliveira
Last active October 4, 2024 17:12
Show Gist options
  • Save nicolas-oliveira/333b7f092b8d0f8b9cecbd05b78f5b16 to your computer and use it in GitHub Desktop.
Save nicolas-oliveira/333b7f092b8d0f8b9cecbd05b78f5b16 to your computer and use it in GitHub Desktop.
Bash Script Documentação e sintaxe completa

Principais Chaves Reservadas no Bash e Exemplos

Chave Descrição Exemplo
$@ Expande todos os argumentos passados ao script como uma lista separada. Útil para loops. for arg in "$@"; do echo $arg; done – Itera sobre todos os argumentos passados ao script.
$* Expande todos os argumentos passados ao script como uma única string. echo "$*" – Exibe todos os argumentos como uma única string.
$# Retorna o número de argumentos passados ao script. echo "Número de argumentos: $#" – Mostra quantos argumentos foram fornecidos ao script.
$? Retorna o código de saída do último comando executado. comando; echo $? – Exibe o código de saída do comando anterior.
$0 Nome do script em execução. echo "Nome do script: $0" – Mostra o nome do script.
${!VARIAVEL[@]} Retorna os índices de um array. arr=("a" "b" "c"); echo ${!arr[@]} – Mostra os índices do array arr (0 1 2).
${VARIAVEL[@]} Expande todos os elementos de um array. arr=("a" "b" "c"); for i in "${arr[@]}"; do echo $i; done – Itera sobre os elementos do array arr.
${VARIAVEL[*]} Expande todos os elementos de um array como uma única string. arr=("a" "b" "c"); echo "${arr[*]}" – Exibe todos os elementos do array como uma string (a b c).
${#VARIAVEL} Retorna o comprimento de uma string ou o número de elementos em um array. texto="Hello"; echo ${#texto} – Mostra o comprimento da string texto (5).
${VARIAVEL:-padrao} Retorna o valor da variável ou um valor padrão se a variável estiver vazia/não definida. echo ${nome:-"Usuário"} – Mostra "Usuário" se a variável nome estiver vazia/não definida.
${VARIAVEL:+sub} Retorna sub se a variável estiver definida, caso contrário retorna nada. nome="John"; echo ${nome:+Olá} – Mostra "Olá" se nome estiver definida.
${VARIAVEL:inicio:len} Retorna uma substring a partir de uma posição inicial e comprimento específico. texto="Olá Mundo"; echo ${texto:4:5} – Retorna "Mundo".

Tipos de Dados no Bash Script

Tipo de Dado Descrição Exemplo Comando / Sintaxe
String Sequência de caracteres que não precisa de declaração explícita. texto="Olá Mundo" texto="valor"
Inteiro (Integer) Números inteiros. numero=123 numero=123
Array Unidimensional Lista indexada de valores. Cada valor pode ser acessado via índices. arr=("valor1" "valor2" "valor3") arr=("item1" "item2")
Array Associativo Arrays cujas chaves são strings ao invés de índices numéricos. Requer Bash 4+. declare -A frutas; frutas[maçã]="vermelha"; frutas[banana]="amarela" declare -A nome_array
Booleano (True/False) Não há um tipo explícito. Geralmente é manipulado com 0 e 1 (ou vazio), ou através de comandos. [ $var -eq 1 ] && echo "True" [ condição ]
Null (Vazio) Representa a ausência de valor. Uma variável não definida é considerada nula. unset variavel ou variavel="" unset variavel ou variavel=""
Constantes (Read-Only) Valores que não podem ser modificados após a inicialização. readonly PI=3.1415 readonly nome_variavel=valor
Comando Subsistema (Command) Utiliza o resultado de um comando como valor. data=$(date) variavel=$(comando)
Expressões Regulares Utilizadas para realizar comparações de padrões em strings. [[ "arquivo.txt" =~ .*\.txt$ ]] [[ string =~ regex ]]
Cadeia de Comandos (Pipelines) Executa uma sequência de comandos e utiliza seu resultado como valor para outro. resultado=$(ls | grep .txt) comando1 | comando2
Arithmetics Operações matemáticas em inteiros. resultado=$((5 + 3)) $((expressão))
File Descriptor Manipula arquivos abertos e redireciona entradas e saídas. exec 3>arquivo.txt; echo "teste" >&3; exec 3>&- exec fd>arquivo ou exec fd<arquivo
Variáveis de Ambiente Variáveis globais do sistema que podem ser acessadas dentro dos scripts. echo $HOME $NOME_VARIAVEL

Manipulação de Strings em Shell Script / Bash

Ação Comando / Sintaxe Exemplo Descrição
Obter comprimento de uma string ${#string} texto="Olá Mundo"; echo ${#texto} Retorna o comprimento da string (número de caracteres).
Substring ${string:posicao:comprimento} texto="Olá Mundo"; echo ${texto:4:5} Extrai uma parte da string a partir de uma posição específica.
Substituir parte da string ${string/padrao/substituto} texto="foo bar"; echo ${texto/foo/baz} Substitui a primeira ocorrência do padrão pela string substituta.
Substituir todas as ocorrências ${string//padrao/substituto} texto="foo foo"; echo ${texto//foo/baz} Substitui todas as ocorrências do padrão pela string substituta.
Remover substring (prefixo) ${string#padrao} texto="prefixo_arquivo"; echo ${texto#prefixo_} Remove o menor prefixo que corresponda ao padrão.
Remover substring (sufixo) ${string%padrao} texto="arquivo.txt"; echo ${texto%.txt} Remove o menor sufixo que corresponda ao padrão.
Converter para minúsculas ${string,,} texto="OLA"; echo ${texto,,} Converte todos os caracteres da string para minúsculas.
Converter para maiúsculas ${string^^} texto="ola"; echo ${texto^^} Converte todos os caracteres da string para maiúsculas.
Remover todos os espaços echo "$string" | tr -d ' ' texto="olá mundo"; echo "$texto" | tr -d ' ' Remove todos os espaços da string.
Dividir string em array IFS='delimitador'; read -ra array <<< "$string" IFS=' '; texto="foo bar"; read -ra arr <<< "$texto"; echo ${arr[1]} Divide a string em um array com base no delimitador fornecido.
Verificar se contém substring [[ $string == *substring* ]] texto="Olá Mundo"; [[ $texto == *Mundo* ]] && echo "Contém" Verifica se a string contém uma determinada substring.
Concatenar strings resultado="$string1$string2" texto1="Olá"; texto2=" Mundo"; resultado="$texto1$texto2"; echo $resultado Concatena duas ou mais strings.
Substring reversa ${string: -N} texto="abcdef"; echo ${texto: -3} Retorna os últimos N caracteres da string.
Remover todos os espaços extras echo "$string" | xargs texto=" olá mundo "; echo "$texto" | xargs Remove espaços extras no início, no fim e entre palavras, deixando apenas um espaço.
Inverter string echo "$string" | rev texto="abcd"; echo "$texto" | rev Inverte a ordem dos caracteres da string.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment