logo

Tableau de frappe

Dans cette rubrique, nous démontrerons les bases du tableau bash et comment ils sont utilisés dans les scripts shell bash.

Un tableau peut être défini comme une collection d’éléments de type similaire. Contrairement à la plupart des langages de programmation, les tableaux dans les scripts bash ne doivent pas nécessairement être une collection d'éléments similaires. Puisque Bash ne fait pas la distinction entre une chaîne et un nombre, un tableau peut contenir à la fois des chaînes et des nombres.

Bash ne prend pas en charge les tableaux multidimensionnels ; nous ne pouvons pas avoir les éléments qui sont des tableaux en eux-mêmes. Bash prend en charge les tableaux unidimensionnels indexés numériquement ainsi que les tableaux associatifs. Pour accéder au tableau indexé numériquement à partir du dernier, on peut utiliser des indices négatifs. L'index '-1' sera considéré comme référence pour le dernier élément. Nous pouvons utiliser plusieurs éléments dans un tableau.

Déclaration de tableau Bash

Les tableaux dans Bash peuvent être déclarés des manières suivantes :

Création de tableaux indexés numériquement

Nous pouvons utiliser n'importe quelle variable comme tableau indexé sans la déclarer.

Pour déclarer explicitement une variable en tant que tableau Bash, utilisez le mot-clé 'declare' et la syntaxe peut être définie comme :

 declare -a ARRAY_NAME 

où,

ARRAY_NAME indique le nom que nous attribuerions au tableau.

Note:Les règles de nomination d'une variable dans Bash sont les mêmes pour nommer un tableau.

Une méthode générale pour créer un tableau indexé peut être définie sous la forme suivante :

 ARRAY_NAME[index_1]=value_1 ARRAY_NAME[index_2]=value_2 ARRAY_NAME[index_n]=value_n 

où le mot-clé « index » est utilisé pour définir des entiers positifs.

Création de tableaux associatifs

Contrairement aux tableaux indexés numériquement, les tableaux associatifs sont d'abord déclarés. Nous pouvons utiliser le mot-clé 'declare' et l'option -A (majuscule) pour déclarer les tableaux associatifs. La syntaxe peut être définie comme :

 declare -A ARRAY_NAME 

Une méthode générale pour créer un tableau associatif peut être définie sous la forme suivante :

 declare -A ARRAY_NAME ARRAY_NAME[index_foo]=value_foo ARRAY_NAME[index_bar]=value_bar ARRAY_NAME[index_xyz]=value_xyz 

où index_ est utilisé pour définir n'importe quelle chaîne.

On peut également écrire la forme ci-dessus de la manière suivante :

df.loc
 declare -A ARRAY_NAME ARRAY_NAME=( [index_foo]=value_foo [index_bar]=value_bar [index_xyz]=value_xyz ) 

Initialisation du tableau Bash

Pour initialiser un Bash Array, nous pouvons utiliser l'opérateur d'affectation (=), en spécifiant la liste des éléments entre parenthèses, séparés par des espaces comme ci-dessous :

 ARRAY_NAME=(element_1st element_2nd element_Nth) 

Note:Ici, le premier élément aura un index 0. De plus, il ne doit y avoir aucun espace autour de l'opérateur d'affectation (=).

Accéder aux éléments du tableau Bash

Pour accéder aux éléments d’un Bash Array, on peut utiliser la syntaxe suivante :

type de retour en Java
 echo ${ARRAY_NAME[2]} 

Imprimer le tableau Bash

Nous pouvons utiliser le mot-clé 'declare' avec une option '-p' pour imprimer tous les éléments d'un Bash Array avec tous les index et détails. La syntaxe pour imprimer le Bash Array peut être définie comme :

 declare -p ARRAY_NAME 

Opérations sur les tableaux

Une fois qu’un tableau est attribué, nous pouvons y effectuer quelques opérations utiles. Nous pouvons afficher ses clés et valeurs ainsi que les modifier en ajoutant ou en supprimant les éléments :

Éléments de référence

Pour référencer un seul élément, nous devons connaître le numéro d’index de l’élément. Nous pouvons référencer ou imprimer n’importe quel élément en utilisant la syntaxe suivante :

 ${ARRAY_NAME[index]} 

Note:Les accolades ${} sont requises pour éviter les opérateurs d'expansion de nom de fichier du shell.

Par exemple, imprimons un élément d'un tableau avec un indice de 2 :

Script bash

 #!/bin/bash #Script to print an element of an array with an index of 2 #declaring the array declare -a example_array=( 'Welcome''To''Javatpoint' ) #printing the element with index of 2 echo ${example_array[2]} 

Sortir

 Javatpoint 

Si nous utilisons @ ou * à la place d'un index spécifié, il s'étendra à tous les membres du tableau. Pour imprimer tous les éléments, on peut utiliser le formulaire suivant :

Script bash

 #!/bin/bash #Script to print all the elements of the array #declaring the array declare -a example_array=( 'Welcome''To''Javatpoint' ) #Printing all the elements echo '${example_array[@]}' 

Sortir

 Welcome to Javatpoint 

La seule différence entre l'utilisation de @ et * est que le formulaire est entouré de guillemets doubles lors de l'utilisation de @. Dans le premier cas (en utilisant @), l'expansion fournit un résultat en un mot pour chaque élément du tableau. Il peut être mieux décrit à l’aide de la « boucle for ». Supposons que nous ayons un tableau avec trois éléments, « Bienvenue », « À » et « Javatpoint » :

 $ example_array= (Welcome to Javatpoint) 

Appliquer une boucle avec @ :

 for i in '${example_array[@]}'; do echo '$i'; done 

Cela produira le résultat suivant :

 Welcome To Javatpoint 

En appliquant une boucle avec *, un seul résultat sera produit contenant tous les éléments du tableau sous la forme d'un seul mot :

 Welcome To Javatpoint 

Il est important de comprendre l'utilisation de @ et * car ils sont utiles lors de l'utilisation du formulaire pour parcourir les éléments du tableau.

Imprimer les clés d'un tableau

On peut également récupérer et imprimer les clés utilisées dans les tableaux indexés ou associatifs, au lieu de leurs valeurs respectives. Cela peut être effectué en ajoutant le ! opérateur avant le nom du tableau comme ci-dessous :

commande de retour java
 ${!ARRAY_NAME[index]} 

Exemple

 #!/bin/bash #Script to print the keys of the array #Declaring the Array declare -a example_array=( 'Welcome''To''Javatpoint' ) #Printing the Keys echo '${!example_array[@]}' 

Sortir

 0 1 2 

Trouver la longueur du tableau

Nous pouvons compter le nombre d'éléments contenus dans le tableau en utilisant la forme suivante :

 ${#ARRAY_NAME[@]} 

Exemple

 #!/bin/bash #Declaring the Array declare -a example_array=( 'Welcome''To''Javatpoint' ) #Printing Array Length echo 'The array contains ${#example_array[@]} elements' 

Sortir

 The array contains 3 elements 

Parcourez le tableau

La méthode générale pour parcourir chaque élément d’un tableau consiste à utiliser la « boucle for ».

Exemple

 #!/bin/bash #Script to print all keys and values using loop through the array declare -a example_array=( 'Welcome''To''Javatpoint' ) #Array Loop for i in '${!example_array[@]}' do echo The key value of element '${example_array[$i]}' is '$i' done 

Sortir

Tableau de frappe

Une autre méthode courante pour parcourir un tableau consiste à récupérer la longueur du tableau et à utiliser la boucle de style C :

Script bash

 #!/bin/bash #Script to loop through an array in C-style declare -a example_array=( &apos;Welcome&apos;&apos;To&apos;&apos;Javatpoint&apos; ) #Length of the Array length=${#example_array[@]} #Array Loop for (( i=0; i <${length}; i++ )) do echo $i ${example_array[$i]} done < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/77/bash-array-2.webp" alt="Bash Array"> <h3>Adding Elements to an Array</h3> <p>We have an option to add elements to an indexed or associative array by specifying their index or associative key respectively. To add the new element to an array in bash, we can use the following form:</p> <pre> ARRAY_NAME[index_n]=&apos;New Element&apos; </pre> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Declaring an array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;PHP&apos;&apos;HTML&apos; ) #Adding new element example_array[4]=&apos;JavaScript&apos; #Printing all the elements echo &apos;${example_array[@]}&apos; </pre> <p> <strong>Output</strong> </p> <pre> Java Python PHP HTML JavaScript </pre> <p>Another method for adding a new element to an array is by using the += operator. There is no need to specify the index in this method. We can add one or multiple elements in the array by using the following way:</p> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Declaring the Array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;PHP&apos; ) #Adding new elements example_array+=( JavaScript CSS SQL ) #Printing all the elements echo &apos;${example_array[@]}&apos; </pre> <p> <strong>Output</strong> </p> <pre> Java Python PHP JavaScript CSS SQL </pre> <h3>Updating Array Element</h3> <p>We can update the array element by assigning a new value to the existing array by its index value. Let&apos;s change the array element at index 4 with an element &apos;Javatpoint&apos;.</p> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Script to update array element #Declaring the array declare -a example_array=( &apos;We&apos;&apos;welcome&apos;&apos;you&apos;&apos;on&apos;&apos;SSSIT&apos; ) #Updating the Array Element example_array[4]=Javatpoint #Printig all the elements of the Array echo ${example_array[@]} </pre> <p> <strong>Output</strong> </p> <pre> We welcome you on Javatpoint </pre> <h3>Deleting an Element from an Array</h3> <p>If we want to delete the element from the array, we have to know its index or key in case of an associative array. An element can be removed by using the &apos; <strong>unset</strong> &apos; command:</p> <pre> unset ARRAY_NAME[index] </pre> <p>An example is shown below to provide you a better understanding of this concept:</p> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Script to delete the element from the array #Declaring the array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Removing the element unset example_array[1] #Printing all the elements after deletion echo &apos;${example_array[@]}&apos; </pre> <p> <strong>Output</strong> </p> <pre> Java HTML CSS JavaScript </pre> <p>Here, we have created a simple array consisting of five elements, &apos;Java&apos;, &apos;Python&apos;, &apos;HTML&apos;, &apos;CSS&apos; and &apos;JavaScript&apos;. Then we removed the element &apos;Python&apos; from the array by using &apos;unset&apos; and referencing the index of it. The index of element &apos;Python&apos; was &apos;1&apos;, since bash arrays start from 0. If we check the indexes of the array after removing the element, we can see that the index for the removed element is missing. We can check the indexes by adding the following command into the script:</p> <pre> echo ${!example_array[@]} </pre> <p>The output will look like:</p> <pre> 0 2 3 4 </pre> <p>This concept also works for the associative arrays.</p> <h3>Deleting the Entire Array</h3> <p>Deleting an entire array is a very simple task. It can be performed by passing the array name as an argument to the &apos; <strong>unset</strong> &apos; command without specifying the index or key.</p> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Script to delete the entire Array #Declaring the Array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Deleting Entire Array unset example_array #Printing the Array Elements echo ${!example_array[@]} #Printing the keys echo ${!example_array[@]} </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/77/bash-array-3.webp" alt="Bash Array"> <p>There will be no output if we try to print the content of the above script. An empty result is returned because the array doesn&apos;t exist anymore.</p> <h3>Slice Array Elements</h3> <p>Bash arrays can also be sliced from a given starting index to the ending index.</p> <p>To slice an array from starting index &apos;m&apos; to an ending index &apos;n&apos;, we can use the following syntax:</p> <pre> SLICED_ARRAY=(${ARRAY_NAME[@]:m:n}&apos;) </pre> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Script to slice Array Element from index 1 to index 3 #Declaring the Array example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Slicing the Array sliced_array=(&apos;${example_array[@]:1:3}&apos;) #Applying for loop to iterate over each element in Array for i in &apos;${sliced_array[@]}&apos; do echo $i done </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/77/bash-array-4.webp" alt="Bash Array"> <hr></${length};>

Exemple

 #!/bin/bash #Declaring an array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;PHP&apos;&apos;HTML&apos; ) #Adding new element example_array[4]=&apos;JavaScript&apos; #Printing all the elements echo &apos;${example_array[@]}&apos; 

Sortir

 Java Python PHP HTML JavaScript 

Une autre méthode pour ajouter un nouvel élément à un tableau consiste à utiliser l'opérateur +=. Il n'est pas nécessaire de spécifier l'index dans cette méthode. Nous pouvons ajouter un ou plusieurs éléments dans le tableau en utilisant la manière suivante :

Exemple

 #!/bin/bash #Declaring the Array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;PHP&apos; ) #Adding new elements example_array+=( JavaScript CSS SQL ) #Printing all the elements echo &apos;${example_array[@]}&apos; 

Sortir

 Java Python PHP JavaScript CSS SQL 

Mise à jour d'un élément de tableau

Nous pouvons mettre à jour l'élément du tableau en attribuant une nouvelle valeur au tableau existant par sa valeur d'index. Changeons l'élément du tableau à l'index 4 avec un élément 'Javatpoint'.

Exemple

 #!/bin/bash #Script to update array element #Declaring the array declare -a example_array=( &apos;We&apos;&apos;welcome&apos;&apos;you&apos;&apos;on&apos;&apos;SSSIT&apos; ) #Updating the Array Element example_array[4]=Javatpoint #Printig all the elements of the Array echo ${example_array[@]} 

Sortir

 We welcome you on Javatpoint 

Supprimer un élément d'un tableau

Si nous voulons supprimer l'élément du tableau, nous devons connaître son index ou sa clé dans le cas d'un tableau associatif. Un élément peut être supprimé en utilisant le ' désarmé ' commande:

 unset ARRAY_NAME[index] 

Un exemple est présenté ci-dessous pour vous permettre de mieux comprendre ce concept :

Exemple

méthode tostring en java
 #!/bin/bash #Script to delete the element from the array #Declaring the array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Removing the element unset example_array[1] #Printing all the elements after deletion echo &apos;${example_array[@]}&apos; 

Sortir

 Java HTML CSS JavaScript 

Ici, nous avons créé un tableau simple composé de cinq éléments, « Java », « Python », « HTML », « CSS » et « JavaScript ». Ensuite, nous avons supprimé l'élément « Python » du tableau en utilisant « unset » et en référençant son index. L'index de l'élément 'Python' était '1', puisque les tableaux bash commencent à 0. Si nous vérifions les index du tableau après avoir supprimé l'élément, nous pouvons voir que l'index de l'élément supprimé est manquant. Nous pouvons vérifier les index en ajoutant la commande suivante dans le script :

 echo ${!example_array[@]} 

Le résultat ressemblera à :

 0 2 3 4 

Ce concept fonctionne également pour les tableaux associatifs.

Suppression de l'intégralité du tableau

Supprimer un tableau entier est une tâche très simple. Cela peut être effectué en passant le nom du tableau comme argument au ' désarmé ' sans spécifier l'index ou la clé.

Exemple

 #!/bin/bash #Script to delete the entire Array #Declaring the Array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Deleting Entire Array unset example_array #Printing the Array Elements echo ${!example_array[@]} #Printing the keys echo ${!example_array[@]} 

Sortir

Tableau de frappe

Il n'y aura aucune sortie si nous essayons d'imprimer le contenu du script ci-dessus. Un résultat vide est renvoyé car le tableau n'existe plus.

Éléments du tableau de tranches

Les tableaux Bash peuvent également être découpés d'un index de départ donné à l'index de fin.

Pour découper un tableau de l'index de départ 'm' à un index de fin 'n', nous pouvons utiliser la syntaxe suivante :

 SLICED_ARRAY=(${ARRAY_NAME[@]:m:n}&apos;) 

Exemple

 #!/bin/bash #Script to slice Array Element from index 1 to index 3 #Declaring the Array example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Slicing the Array sliced_array=(&apos;${example_array[@]:1:3}&apos;) #Applying for loop to iterate over each element in Array for i in &apos;${sliced_array[@]}&apos; do echo $i done 

Sortir

Tableau de frappe