Funções Ni - funções para manipular listas e strings
Publicado por Leandro Santiago 13/06/2007
[ Hits: 9.133 ]
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 }
Bloquear contas em servidor Zimbra após 45 dias
Script que retorno o IP da Comexão ADSL
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (12)