Tableau Shell et tableau associatif
1. Tableau
1.1 Définition du tableau
Une paire de parenthèses représente un tableau et les éléments du tableau sont séparés par des symboles d'espace.
xiaosi@Qunar:~$ a=(1 2 3) xiaosi@Qunar:~$ echo $a 1 xiaosi@Qunar:~$ a=("yoona" "lucy" "tom") xiaosi@Qunar:~$ echo $a yoona
1.2. Longueur du tableau, éléments, affectation et suppression
Longueur : utilisez ${#array name[@ ou *]} pour obtenir la longueur du tableau.
xiaosi@Qunar:~$ echo ${#a[@]} 3 xiaosi@Qunar:~$ echo ${#a[*]} 3
Obtenir des éléments : utilisez ${array name[subscript]} pour obtenir les éléments du tableau (l'indice commence à 0), l'indice est * ou @ pour obtenir l'intégralité contenu du tableau
xiaosi@Qunar:~$ array=("yoona" "lucy" "tom") xiaosi@Qunar:~$ echo ${array[0]} yoona xiaosi@Qunar:~$ echo ${array[1]} lucy xiaosi@Qunar:~$ echo ${array[*]} yoona lucy tom xiaosi@Qunar:~$ echo ${array[@]} yoona lucy tom
Affectation : Vous pouvez attribuer une référence au nom du tableau [indice]. Si l'indice n'existe pas, un nouvel élément du tableau sera automatiquement ajouté
xiaosi@Qunar:~$ array=("yoona" "lucy" "tom") xiaosi@Qunar:~$ echo ${array[2]} tom xiaosi@Qunar:~$ array[2]=lily xiaosi@Qunar:~$ echo ${array[2]} lily
Supprimer : l'élément correspondant peut être effacé par un tableau non défini [indice], sans indice, toutes les données seront effacées
xiaosi@Qunar:~$ array=("yoona" "lucy" "tom") xiaosi@Qunar:~$ unset array[1] xiaosi@Qunar:~$ echo ${array[*]} yoona tom xiaosi@Qunar:~$ unset array xiaosi@Qunar:~$ echo ${array[*]} xiaosi@Qunar:~$
1.3 . Récupère les éléments dans une certaine plage
Récupère les éléments dans la plage donnée du tableau directement via ${array name [@ or *]: Starting position: length} et renvoie une chaîne, séparée par des espaces
xiaosi@Qunar:~$ array=(yoona lucy tom) xiaosi@Qunar:~$ echo ${array[*]} yoona lucy tom xiaosi@Qunar:~$ echo ${array[*]:1:2} lucy tom xiaosi@Qunar:~$ echo ${array[@]:0:1} yoona
1.4. Remplacer
${nom du tableau [@ ou *]/caractère de recherche/caractère de remplacement} Cette opération ne modifiera pas le contenu du tableau d'origine si vous. Si vous devez le modifier, vous pouvez voir l'exemple ci-dessus
xiaosi@Qunar:~$ array=(yoona lucy tom) xiaosi@Qunar:~$ echo ${array[@]/lucy/lily} yoona lily tom xiaosi@Qunar:~$ echo ${array[@]} yoona lucy tom
2. Tableau associatif
Bash prend en charge les tableaux associatifs, qui peuvent parfois utiliser des chaînes comme index de tableau. il est plus facile à comprendre en utilisant des index de chaînes.
2.1 Définir un tableau associatif
Tout d'abord, vous devez utiliser une instruction de déclaration pour déclarer une variable comme tableau associatif.
xiaosi@Qunar:~$ declare -A assArray
Après la déclaration, il existe deux façons d'ajouter des éléments à un tableau associatif.
(1) Utilisez la méthode de liste de valeurs d'index intégrée
xiaosi@Qunar:~$ assArray=([lucy]=beijing [yoona]=shanghai) xiaosi@Qunar:~$ echo ${assArray[lucy]} beijing
(2) Utilisez la valeur d'index indépendante pour l'affectation
xiaosi@Qunar:~$ assArray[lily]=shandong xiaosi@Qunar:~$ assArray[sunny]=xian xiaosi@Qunar:~$ echo ${assArray[sunny]} xian xiaosi@Qunar:~$ echo ${assArray[lily]} shandong
2.2 Liste des index de tableau
Chaque tableau a un index pour la recherche. Utilisez ${!array name[@or*]} pour obtenir la liste d'index du tableau
xiaosi@Qunar:~$ echo ${!assArray[*]} lily yoona sunny lucy xiaosi@Qunar:~$ echo ${!assArray[@]} lily yoona sunny lucy
2.3 Obtenez toutes les paires clé-valeur
#! /bin/bash declare -A cityArray cityArray=([yoona]=beijing [lucy]=shanghai [lily]=shandong) for key in ${!cityArray[*]} do echo "${key} come from ${cityArray[$key]}" done
Résultat :
xiaosi@Qunar:~/company/sh$ bash array.sh lily come from shandong yoona come from beijing lucy come from shanghai
Merci d'avoir lu, j'espère que cela pourra aider tout le monde, merci pour votre soutien à ce site !
Pour des explications plus détaillées et des exemples de codes de tableaux Shell et de tableaux associatifs, veuillez faire attention au site Web PHP chinois !