Funções Ni - funções para manipular listas e strings
Publicado por Leandro Santiago 13/06/2007
[ Hits: 9.123 ]
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 }
Embaralhando elementos de um vetor
Criar lançadores de aplicativos no Unity
Usando variáveis em shell script
Qual o maior número da variável RANDOM?
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
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal