Libreria de Funciones de uso general
Encontrar el valor mínimo en un arreglo
function min() {
local array=("$@")
local min=${array[0]}
for n in ${array[@]}; do
if [[ n -lt $min ]]; then
min=$n
fi
done
echo $min
}
Ejemplo
#!/usr/bin/env bash
function min() {
local array=("$@")
local min=${array[0]}
for n in ${array[@]}; do
if [[ n -lt $min ]]; then
min=$n
fi
done
echo $min
}
array=(1 2 2 4 1 5)
min=$(min ${array[@]})
echo "El valor mínimo en [${array[@]}] es $min"
El valor mínimo en [1 2 2 4 1 5] es 1
Encontrar el valor máximo en un arreglo
function max() {
local array=("$@")
local max=${array[0]}
for n in ${array[@]}; do
if [[ n -gt $max ]]; then
max=$n
fi
done
echo $max
}
Ejemplo
#!/usr/bin/env bash
function max() {
local array=("$@")
local max=${array[0]}
for n in ${array[@]}; do
if [[ n -gt $max ]]; then
max=$n
fi
done
echo $max
}
array=(1 2 2 4 1 5)
max=$(max ${array[@]})
echo "El valor maximo en [${array[@]}] es $max"
El valor maximo en [1 2 2 4 1 5] es 5
Calcular la frecuencia de los valores de un arreglo
function frequency() {
local array=("$@")
declare -A local frequency
for i in ${array[@]}; do
temp=${frequencyf[$i]}
((temp++))
frequencyf[$i]=$temp
done
echo "${frequencyf[@]@K}"
}
Ejemplo
#!/usr/bin/env bash
function frequency() {
local array=("$@")
declare -A local frequency
for i in ${array[@]}; do
temp=${frequencyf[$i]}
((temp++))
frequencyf[$i]=$temp
done
echo "${frequencyf[@]@K}"
}
array=(1 2 2 4 1 5)
declare -A frecuencia="($(frequency "${array[@]}"))"
for key in ${!frecuencia[@]}; do
echo Frecuencia de $key = ${frecuencia[$key]}
done
Frecuencia de 5 = 1
Frecuencia de 4 = 1
Frecuencia de 2 = 2
Frecuencia de 1 = 2
Obtener los valores únicos de un arreglo
function uniq() {
local array=("$@")
declare -A local temp
local unique=()
for n in ${array[@]}; do
((temp[$n]++))
done
for i in ${!array[@]}; do
key=${array[$i]}
if [ -n "${temp[$key]}" ]; then
unique+=($key)
unset temp[$key]
fi
done
echo ${unique[@]}
}
Ejemplo
#!/usr/bin/env bash
function uniq() {
local array=("$@")
declare -A local temp
local unique=()
for n in ${array[@]}; do
((temp[$n]++))
done
for i in ${!array[@]}; do
key=${array[$i]}
if [ -n "${temp[$key]}" ]; then
unique+=($key)
unset temp[$key]
fi
done
echo ${unique[@]}
}
array=(1 2 2 4 1 5)
unicos=($(uniq ${array[@]}))
echo "Valores originales = ${array[@]}"
echo "Valores únicos = ${unicos[@]}"
Valores originales = 1 2 2 4 1 5
Valores únicos = 1 2 4 5
Obtener los valores que no se repiten en un arreglo
function singleton() {
local array=("$@")
declare -A local temp
local single=()
for n in ${array[@]}; do
((temp[$n]++))
done
for i in ${!array[@]}; do
key=${array[$i]}
if [ ${temp[$key]} -eq 1 ]; then
single+=($key)
unset temp[$key]
fi
done
echo ${single[@]}
}
Ejemplo
#!/usr/bin/env bash
function singleton() {
local array=("$@")
declare -A local temp
local single=()
for n in ${array[@]}; do
((temp[$n]++))
done
for i in ${!array[@]}; do
key=${array[$i]}
if [ ${temp[$key]} -eq 1 ]; then
single+=($key)
unset temp[$key]
fi
done
echo ${single[@]}
}
array=(1 2 2 4 1 5)
no_repetidos=($(singleton ${array[@]}))
echo "Valores originales = ${array[@]}"
echo "Valores sin repetir = ${no_repetidos[@]}"
Valores originales = 1 2 2 4 1 5
Valores sin repetir = 4 5