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

#!/bin/bash
# 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[0]=value0
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

#!/bin/bash
# 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

declare -A site=(["google"]="www.google.com" ["ejemplo"]="www.example.com" ["taobao"]="www.taobao.com")

También podemos declarar primero un arreglo asociativo y luego establecer las claves y los valores:

Ejemplo

declare -A site
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

declare -A site
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

#!/bin/bash
# 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

declare -A site
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

declare -A site
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

#!/bin/bash
# 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
数组元素个数为: 4
Otras extensiones