Conceptos básicos de arrays en secuencias de comandos de Shell | Serie 1

Considere una Situación si queremos almacenar 1000 números y realizar operaciones sobre ellos. Si usamos el concepto de variable simple, entonces tenemos que crear 1000 variables y realizar operaciones en ellas. Pero es difícil manejar una gran cantidad de variables. Por lo tanto, es bueno almacenar el mismo tipo de valores en la array y luego acceder a través del número de índice.

Array en Shell Scripting
Un array es un arreglo sistemático del mismo tipo de datos. Pero en Shell script Array es una variable que contiene múltiples valores que pueden ser del mismo tipo o de diferente tipo, ya que por defecto en Shell script todo se trata como una string. Una array se basa en cero, es decir, la indexación comienza con 0.

¿Cómo declarar Array en Shell Scripting?
Podemos declarar una array en un script de shell de diferentes maneras.

1. Declaración
indirecta En la declaración indirecta, asignamos un valor en un índice particular de variable de array. No es necesario declarar primero.

ARRAYNAME[INDEXNR]=value

2. Declaración
explícita En la declaración explícita, primero declaramos la array y luego asignamos los valores.

declare -a ARRAYNAME

3. Asignación compuesta
En Asignación compuesta, declaramos una array con un montón de valores. También podemos agregar otros valores más tarde.

ARRAYNAME=(value1 value2  .... valueN)

o
[númeroíndice=]string

ARRAYNAME=([1]=10 [2]=20 [3]=30)

¿Para imprimir el valor de array en Shell Script?

Imprimir todos los elementos
[@]y [*]significa todos los elementos de la array.

echo ${ARRAYNAME[*]}
#! /bin/bash
 
# To declare static Array 
arr=(prakhar ankit 1 rishabh manish abhinav)
 
# To print all elements of array
echo ${arr[@]}       
echo ${arr[*]}       
echo ${arr[@]:0}    
echo ${arr[*]:0}    

Producción:

prakhar ankit 1 rishabh manish abhinav
prakhar ankit 1 rishabh manish abhinav
prakhar ankit 1 rishabh manish abhinav
prakhar ankit 1 rishabh manish abhinav

Para imprimir el primer elemento

# To print first element
echo ${arr[0]}        
echo ${arr}        

Producción:

prakhar
prakhar

Para imprimir el elemento de índice seleccionado

echo ${ARRAYNAME[INDEXNR]}
# To print particular element
echo ${arr[3]}        
echo ${arr[1]}        

Producción:

rishabh
ankit

Para imprimir elementos de un índice particular

echo ${ARRAYNAME[WHICH_ELEMENT]:STARTING_INDEX}
# To print elements from a particular index
echo ${arr[@]:0}     
echo ${arr[@]:1}
echo ${arr[@]:2}     
echo ${arr[0]:1}    

Producción:

prakhar ankit 1 rishabh manish abhinav
ankit 1 rishabh manish abhinav
1 rishabh manish abhinav
prakhar

Para imprimir elementos en rango

echo ${ARRAYNAME[WHICH_ELEMENT]:STARTING_INDEX:COUNT_ELEMENT}
# To print elements in range
echo ${arr[@]:1:4}     
echo ${arr[@]:2:3}     
echo ${arr[0]:1:3}    

Producción:

ankit 1 rishabh manish
1 rishabh manish
rak

Para contar la longitud de en array

Para contar la longitud de un elemento particular en Array.
Use # (hash) para imprimir la longitud de un elemento en particular

# Length of Particular element
echo ${#arr[0]}        
echo ${#arr}        

Producción:

7
7

Para contar la longitud de Array.

# Size of an Array
echo ${#arr[@]}        
echo ${#arr[*]}        

Producción:

6
6

Para buscar en array

arr[@]: Todos los elementos de la array.
/Search_using_Regular_Expression/: Buscar en Array
Search Devuelve 1 si encontró el patrón; de lo contrario, devuelve cero. No altera los elementos originales de la array.

# Search in Array
echo ${arr[@]/*[aA]*/}    

Producción:

1

Para buscar y reemplazar en array

//Search_using_Regular_Expression/Replace: Buscar y reemplazar

Buscar y reemplazar no cambia en el valor original del elemento de array. Simplemente devolvió el nuevo valor. Entonces puede almacenar este valor en la misma variable o en una diferente.

# Replacing Substring Temporary
echo ${arr[@]//a/A}         
echo ${arr[@]}             
echo ${arr[0]//r/R}        

Producción:

prAkhAr Ankit 1 rishAbh mAnish AbhinAv
prakhar ankit 1 rishabh manish abhinav
RakhaR

¿Para eliminar la variable de array en Shell Script?

Para eliminar el elemento índice-1

unset ARRAYNAME[1]

Para eliminar toda la array

unset ARRAYNAME
#! /bin/bash
# To declare static Array 
arr=(prakhar ankit 1 rishabh manish abhinav)
  
# To print all elements of array
echo ${arr[@]}        # prakhar ankit 1 rishabh manish abhinav
echo ${arr[*]}        # prakhar ankit 1 rishabh manish abhinav
echo ${arr[@]:0}    # prakhar ankit 1 rishabh manish abhinav
echo ${arr[*]:0}    # prakhar ankit 1 rishabh manish abhinav
  
# To print first element
echo ${arr[0]}        # prakhar
echo ${arr}            # prakhar
  
# To print particular element
echo ${arr[3]}        # rishabh
echo ${arr[1]}        # ankit
  
# To print elements from a particular index
echo ${arr[@]:0}    # prakhar ankit 1 rishabh manish abhinav
echo ${arr[@]:1}    # ankit 1 rishabh manish abhinav
echo ${arr[@]:2}    # 1 rishabh manish abhinav
echo ${arr[0]:1}    # rakhar
  
# To print elements in range
echo ${arr[@]:1:4}    # ankit 1 rishabh manish
echo ${arr[@]:2:3}    # 1 rishabh manish
echo ${arr[0]:1:3}    # rak
  
# Length of Particular element
echo ${#arr[0]}        # 7
echo ${#arr}        # 7
  
# Size of an Array
echo ${#arr[@]}        # 6
echo ${#arr[*]}        # 6
  
# Search in Array
echo ${arr[@]/*[aA]*/}    # 1
  
# Replacing Substring Temporary
echo ${arr[@]//a/A}        # prAkhAr Ankit 1 rishAbh mAnish AbhinAv
echo ${arr[@]}            # prakhar ankit 1 rishabh manish abhinav
echo ${arr[0]//r/R}        # pRakhaR

Producción:

prakhar ankit 1 rishabh manish abhinav
prakhar ankit 1 rishabh manish abhinav
prakhar ankit 1 rishabh manish abhinav
prakhar ankit 1 rishabh manish abhinav
prakhar
prakhar
rishabh
ankit
prakhar ankit 1 rishabh manish abhinav
ankit 1 rishabh manish abhinav
1 rishabh manish abhinav
rakhar
ankit 1 rishabh manish
1 rishabh manish
rak
7
7
6
6
1
prAkhAr Ankit 1 rishAbh mAnish AbhinAv
prakhar ankit 1 rishabh manish abhinav
pRakhaR

Referencia:
https://www.tecmint.com/working-with-arrays-in-linux-shell-scripting/

Publicación traducida automáticamente

Artículo escrito por prakhargvp y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *