Funções Ni - funções para manipular listas e strings
Publicado por Leandro Santiago 13/06/2007
[ Hits: 9.439 ]
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
}
Srt2vtt in Shell Script (Beta)
Desligamento da máquina caso o servidor venha a sair do ar.
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (10)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









