Funções Ni - funções para manipular listas e strings
Publicado por Leandro Santiago 13/06/2007
[ Hits: 9.311 ]
Homepage: http://leandrosan.wordpress.com
Este é um apanhado de funções que eu fiz na esperança de que sejam úteis a alguém.
Contém 21 funções em bash-script para serem usadas para os mais diversos fins.
Espero que gostem
#!/bin/bash ### Funções NI 0.1### # funcoesni.sh ## escritas por: Leandro Santiago da Silva ## e-mail: leandrosansilva [AT] gmail [DOT] com ## Maringá/PR - Brasil 08 de Junho de 2007 # Este arquivo tem um apanhado de funções que permitem a manipulação de strings e vetores, para serem usadas em seus bash-scripts. # Espero que sejam úteis a alguém # Você pode usá-las como quiser, mas desde que mantenha os créditos do autor (E, se possível, se publica-las em algum lugar, site, ou coisa do gênero, me mande um e-mail, só pra eu saber mesmo ;-)). # ChangeLog # Versão 0.1 # Inclusão das funções # V # F # Not # BackupVar # RestoreVar # OrdenaVetor # InsereFinalLista # UltimoDaLista # RemoveFinalLista # ListaVazia # RemoveInicioLista # PrimeiroDaLista # InsereInicioLista # SetY # EchoElemento # SetElemento # Str2Ar # Ar2Str # MudarChar # Max # Min ######################### # Funçõe booleanas # Exemplos de uso: # # booleano=V ## seta booleano como verdadeiro # if ! $booleano # > then # > echo "booleano verdadeiro" # > else # > echo "booleano falso" # > fi # booleano falso # # booleano=F ## Seta booleano como falso # booleano=`not $booleano` ## inverto o valor lógico de booleano, que passa a ser verdadeiro # echo $booleano # V # Função que retorna 0 (Verdadeiro) V() { return 0 } # Função que retorna 1 (Falso) F() { return 1 } # Função que imprime V se o valor que recebe como primeiro parâmetro é F, e F se o dito cujo for V Not() { $1 && echo F || echo V } ############################################## # Funçõe que criam backups e restauram variáveis # Exemplos de uso: # Animal="O rato" # echo "$Animal roeu a roupa do rei de Roma" # O rato roeu a roupa do rei de Roma # BackupVar Animal # crio o backup # Animal="A Gata" # echo "$Animal roeu a roupa do rei de Roma" # A Gata roeu a roupa do rei de Roma # RestoreVar Animal # restauro o conteúdo da variável # echo "$Animal roeu a roupa do rei de Roma" # O rato roeu a roupa do rei de Roma # Função que cria uma cópia de backup de uma variável simples (string). # recebe como parâmetro o NOME da variável BackupVar() { eval $1[1]=\"\$$1\" } # Função que restaura uma variável que tenha sido "backupeada" pela Função BackipVar # Recebe como parâmetro o NOME da variável RestoreVar() { eval $1='"${'$1'[1]}"' eval unset $1[1] } ################################################## ## Funções referentes ao uso de vetores e listas # Função que ordena um vetor de números inteiros # Recebe como parâmetro somente o NOME do vetor OrdenaVetor() { eval $1'=(`echo ${'$1'[@]} | tr " " "\n" | sort -n`)' } # Função que insere um elemento no final de um vetor # Recebe como parâmetros: # 1- O NOME do vetor que receberá o elemento # 2- O valor a ser inserido InsereFinalLista() { eval local Tamanho='${#'$1'[@]}' eval $1\[$Tamanho\]="$2" } # Função que remove um elemento de um vetor # Recebe dois parâmetros: # 1- O NOME do vetor # 2- O NOME da variável que receberá o conteúdo do elemento retirado RemoveFinalLista() { eval local Tamanho='${#'$1'[@]}' eval $2='${'$1'['$((Tamanho-1))']}' eval unset $1\[$((Tamanho-1))\] } # Função que imprime o valor do último elemento de um vetor. # Recebe como parâmetro o NOME do vetor UltimoDaLista() { eval local Tamanho='${#'$1'[@]}' eval echo '${'$1'['$((Tamanho-1))']}' } # Função que retorna verdadeiro se o vetor não contém elementos # e falso, caso contrário ListaVazia() { eval local Tamanho='${#'$1'[@]}' ((Tamanho!=0)) && return 1 || return 0 } # Função que remove um elemento do início de um vetor # parâmetros: # 1 - NOME do vetor que terá um elemento removido # 2 - NOME da variável que receberá o conteúdo do elemento removido RemoveInicioLista() { eval local Tamanho='${#'$1'[@]}' eval $2='${'$1'[0]}' for ((i=0;i<Tamanho-1;i++)) do eval $1[$i]='${'$1'['$((i+1))']}' done eval unset $1[$i] } # Função que inprime o prieiro elemento de um vetor # Recebe como parâmetro o NOME do vetor PrimeiroDaLista() { eval echo '${'$1'[0]}' } # Função que insere um elemento no início de um vetor # Recebe como parâmetros: # 1- O NOME do vetor que receberá o elemento # 2- O valor a ser inserido InsereInicioLista() { eval local Tamanho='${#'$1'[@]}' for ((i=Tamanho;i>0;i--)) do eval $1\[$i\]='${'$1'['$((i-1))']}' done eval $1[0]=\"$2\" } ########## Funções que emulam um vetor bidimensional ########### # Função que recebe como parâmetros # 1 - Uma lista na forma elem0^elem1^elem2^...^elemN # 2 - Um índice N # 3 - O Valor que será jogado no lugar de elemN SetY() # Lista Posição Valor { local IFS='^' local VetorDirY=($1) VetorDirY[$2]="$3" echo ${VetorDirY[@]} | tr " " "^" } # Função que recebe três parâmetros # 1 - O NOME do vetor # 2 - O índice i # 3 - O indice j # # E exbibe o elemento de cordenadas i j do vetor EchoElemento() # NomeVetor posX posY { eval local ElemSemEsp=\`echo '${'$1'['$2']} | cut -f'"$(($3+1))"' -d^ | tr "_" " "'\` echo $ElemSemEsp } # Função que recebe quatro parâmetros: # 1 - Nome do vetor # 2 - Ãncide i # 3 - indice j # 4 - Valor # E atribui ao elemento de coordenada [i,j] do vetor de Valor SetElemento() # NomeVetor posX posY valor { local ElemSemEsp=`echo $4 | tr " " "_"` eval $1[$2]='"`'SetY \"'${'$1'['$2']}'\" \"$3\" \"$ElemSemEsp\"'`"' } ############# Conversores de vetores e strings ############################## # Converte uma string num vetor (Cada letra vira um elemento) # parâmetros: # 1 - Uma string # 2 - O NOME de um vetor que receberá Str2Ar() # "string" <nome vetor> { local EXP="$1" local TAM=${#EXP} for ((i=0;i<TAM;i++)) do eval $2[$i]=\""${EXP:$i:1}"\" done } # Converte um vetor numa string, # Recebe como parâmetros: # 1 - O nome do vetor # E imprime a string correspondente Ar2Str() # <nome vetor> { local STRING eval local TAM='${#'$1'[@]}' for ((i=0;i<TAM;i++)) do eval STRING=\"${STRING}'${'$1'['$i']}'\" done echo $STRING } # Função que recebe como parâmetros: # 1 - Uma string # 2 - Um índice # 3 - Um caractere # E imprime a string, mas com o caractere recebido no lugar do de índice recebido MudarChar() # "string" indice novocaractere { local ArrAux Str2Ar "$1" ArrAux ArrAux[$2]="$3" Ar2Str ArrAux } ################ Funções Max e Min ################################# # Função que recebe como parâmetros uma lista de números inteiros e imprime na tela o maor deles # Exemplo de uso: # Max 2 5 8 9 20 987 56 30 986 # 987 Max() { local Entrada=($@) local Maior=${Entrada[0]} for ((i=1;i<${#Entrada[@]};i++)) do ((Entrada[i]>Maior)) && ((Maior=Entrada[i])) done echo $Maior } # Função que recebe como parâmetros uma lista de números inteiros e imprime na tela o menor deles # Exemplo de uso: # Min 5 2 8 9 20 987 56 30 986 # 2 Min() { local Entrada=($@) local Menor=${Entrada[0]} for ((i=1;i<${#Entrada[@]};i++)) do ((Entrada[i]<Menor)) && ((Menor=Entrada[i])) done echo $Menor }
Automatizando a limpeza do cache do squid
Proteja sua rede com um simples script de firewall
Incluindo lista de IP's nos arquivos de bloqueio do Squid automaticamente
Nenhum coment�rio foi encontrado.
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Alguém já usou o framework Avalonia para desenvolver interfaces de usu... (4)
Ajuda Pra Melhoria do NFTABLES. (8)
Sinto uma leve lentidão ao arrastar, miniminizar e restauras as janela... (2)
Pastas da raiz foram para a área de trabalho [RESOLVIDO] (7)