J'ai un tableau contenant des éléments, mais je veux pousser les nouveaux éléments au début du tableau; Comment je fais ça?
bash
shell-script
array
Gaurav KS
la source
la source
ARRAY+=('foo')
Réponses:
Pour ajouter un élément au début d'un tableau, utilisez.
Généralement, vous feriez.
Pour ajouter un élément à la fin d'un tableau, utilisez.
Ou à la place
Généralement, vous feriez.
Pour ajouter un élément à un index spécifique d'un tableau, utilisez.
Supposons que nous voulions ajouter un élément à la position de Index2 arr [2] , nous ferions en fait de fusionner les sous-tableaux ci-dessous:
Obtenir tous les éléments avec Index position2 jusqu'au dernier arr [2] , arr [3] , ....
Supprimer un élément du tableau
En plus de supprimer un élément d'un tableau (disons l'élément # 2), nous devons concaténer deux sous-tableaux. Le premier sous-tableau contiendra les éléments avant l'élément n ° 2 et le second sous-tableau contiendra les éléments après l'élément n ° 2.
${arr[@]:0:2}
obtiendra deux éléments arr [0] et arr [1] commence au début du tableau.${arr[@]:3}
obtiendra tous les éléments de index3 arr [3] au dernier.Une autre possibilité de supprimer un élément est
Utiliser
unset
(assigner réellement une valeur 'null' à l'élément)Utilisez le motif de remplacement si vous connaissez la valeur de vos éléments.
la source
arr+=(element)
etunset arr[2]
(ce qui devrait êtreunset -v 'arr[2]'
!), Cela suppose des tableaux non clairsemés. Notez également que learr=( "${arr[@]/PATTERN/}" )
ne change pas le nombre d'éléments. Tout ce qu'il peut faire est de les remplacer par la chaîne vide.Notez que les tableaux de
bash
(copiés à partir de ksh) sont plutôt des tableaux associatifs.créerait un nouveau
$a
tableau avecnewvalue
as${a[0]}
et les éléments du tableau d'origine ajoutés dans l'ordre numérique de leur clé avec les clés 1, 2 ...Par exemple, si vous aviez:
Cela explique pourquoi il n'y a pas d'opérateur intégré pour cela.
Si vous voulez insérer le
newvalue
as${a[0]}
et décaler toutes les autres clés, vous avez besoin d'un tableau temporaire:Les shell similaires
zsh
ouyash
ayant des tableaux normaux ont des opérateurs pour cela:zsh
:(Fonctionne également pour les chaînes ajoutées aux variables scalaires)
yash
:la source
la source