Arreglos de Shell
En un arreglo se pueden almacenar varios valores. Bash Shell solo admite arreglos unidimensionales (no admite arreglos multidimensionales); al inicializar no es necesario definir el tamaño del arreglo (similar a PHP).
Como en la mayoría de los lenguajes de programación, el índice de los elementos del arreglo comienza en 0.
Los arreglos de Shell se representan entre paréntesis, y los elementos se separan con el símbolo "espacio". El formato de sintaxis es el siguiente:
array_name=(value1 value2 ... valuen)
Ejemplo
Crear un arreglo simplemy_array:
Ejemplo
# autor: Tutorial de novatos
# url:www.example.com
my_array=(A B "C" D)
También podemos usar subíndices numéricos para definir arreglos:
Ejemplo
array_name[1]=value1
array_name[2]=value2
Leer arreglos
El formato general para leer el valor de un elemento de un arreglo es:
${array_name[index]}
El siguiente ejemplo lee los elementos del arreglo mediante índices numéricos:
Ejemplo
# autor: Tutorial de novatos
# url:www.example.com
my_array=(A B "C" D)
echo "El primer elemento es:${my_array[0]}"
echo "El segundo elemento es:${my_array[1]}"
echo "El tercer elemento es:${my_array[2]}"
echo "El cuarto elemento es:${my_array[3]}"
Ejecute el script, el resultado de salida es el siguiente:
$ chmod +x test.sh $ ./test.sh 第一个元素为: A 第二个元素为: B 第三个元素为: C 第四个元素为: D
Arreglos asociativos
Bash admite arreglos asociativos; se puede acceder a los elementos del arreglo utilizando cualquier cadena o entero como subíndice.
Los arreglos asociativos utilizandeclareel comando para declararse, el formato de sintaxis es el siguiente:
declare -A array_name
-ALa opción se utiliza para declarar un arreglo asociativo.
Las claves de un arreglo asociativo son únicas.
En el siguiente ejemplo creamos un arreglo asociativositey creamos diferentes pares clave-valor:
Ejemplo
También podemos declarar primero un arreglo asociativo y luego establecer las claves y los valores:
Ejemplo
site["google"]="www.google.com"
site["ejemplo"]="www.example.com"
site["taobao"]="www.taobao.com"
También se puede asignar valores mientras se define:
Para acceder a los elementos de un arreglo asociativo se puede usar la clave especificada, el formato es el siguiente:
array_name["index"]
En el siguiente ejemplo accedemos a los elementos del arreglo asociativo mediante la clave:
Ejemplo
site["google"]="www.google.com"
site["ejemplo"]="www.example.com"
site["taobao"]="www.taobao.com"
echo ${site["ejemplo"]}
Ejecute el script, el resultado de salida es el siguiente:
www.example.com
Obtener todos los elementos del arreglo
Usando@o*se pueden obtener todos los elementos del arreglo, por ejemplo:
Ejemplo
# autor: Tutorial de novatos
# url:www.example.com
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D
echo "Los elementos del arreglo son:${my_array[*]}"
echo "Los elementos del arreglo son:${my_array[@]}"
Ejecute el script, el resultado de salida es el siguiente:
$ chmod +x test.sh $ ./test.sh 数组的元素为: A B C D 数组的元素为: A B C D
Ejemplo
site["google"]="www.google.com"
site["ejemplo"]="www.example.com"
site["taobao"]="www.taobao.com"
echo "Los elementos del arreglo son:${site[*]}"
echo "Los elementos del arreglo son:${site[@]}"
Ejecute el script, el resultado de salida es el siguiente:
$ chmod +x test.sh $ ./test.sh 数组的元素为: www.google.com www.example.com www.taobao.com 数组的元素为: www.google.com www.example.com www.taobao.com
Agregar un signo de exclamación antes del arreglo!permite obtener todas las claves del arreglo, por ejemplo:
Ejemplo
site["google"]="www.google.com"
site["ejemplo"]="www.example.com"
site["taobao"]="www.taobao.com"
echo "Las claves del arreglo son:${!site[*]}"
echo "Las claves del arreglo son:${!site[@]}"
Ejecute el script, el resultado de salida es el siguiente:
数组的键为: google ejemplo taobao 数组的键为: google ejemplo taobao
Obtener la longitud del arreglo
El método para obtener la longitud de un arreglo es el mismo que para obtener la longitud de una cadena, por ejemplo:
Ejemplo
# autor: Tutorial de novatos
# url:www.example.com
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D
echo "El número de elementos del arreglo es:${#my_array[*]}"
echo "El número de elementos del arreglo es:${#my_array[@]}"
Ejecute el script, el resultado de salida es el siguiente:
$ chmod +x test.sh $ ./test.sh 数组元素个数为: 4 数组元素个数为: 4Otras extensiones