Ich habe ein Array mit einigen Elementen, möchte aber neue Elemente an den Anfang des Arrays verschieben. Wie mache ich das?
bash
shell-script
array
Gaurav KS
quelle
quelle
ARRAY+=('foo')
Antworten:
Um ein Element am Anfang eines Arrays einzufügen, verwenden Sie.
Im Allgemeinen würden Sie tun.
Um ein Element am Ende eines Arrays einzufügen, verwenden Sie.
Oder stattdessen
Im Allgemeinen würden Sie tun.
Um einem bestimmten Index eines Arrays ein Element hinzuzufügen, verwenden Sie.
Nehmen wir an, wir möchten der Position von Index2 arr [2] ein Element hinzufügen , das wir tatsächlich in den folgenden Unterarrays zusammenführen:
Holen Sie sich alle Elemente mit Index position2 zum letzten arr [2] , arr [3] , ....
Ein Element aus dem Array entfernen
Zusätzlich zum Entfernen eines Elements aus einem Array (z. B. Element Nr. 2) müssen zwei Unterarrays verkettet werden. Das erste Unterarray enthält die Elemente vor Element 2 und das zweite Unterarray enthält die Elemente nach Element 2.
${arr[@]:0:2}
erhält zwei Elemente arr [0] und arr [1] beginnt am Anfang des Arrays.${arr[@]:3}
Liefert alle Elemente von index3 arr [3] bis zum letzten.Eine andere Möglichkeit, ein Element zu entfernen, ist
Using
unset
(ordne dem Element tatsächlich den Wert 'null' zu)Verwenden Sie das Ersetzungsmuster, wenn Sie den Wert Ihrer Elemente kennen.
quelle
arr+=(element)
undunset arr[2]
(was sein sollteunset -v 'arr[2]'
!) Nicht-spärliche Arrays vorausgesetzt werden. Beachten Sie auch, dassarr=( "${arr[@]/PATTERN/}" )
sich die Anzahl der Elemente nicht ändert. Alles was es tun kann, ist sie durch die leere Zeichenkette zu ersetzen.Beachten Sie, dass Arrays in
bash
(kopiert von ksh) eher assoziative Arrays sind.würde ein neues
$a
Array mitnewvalue
as erstellen${a[0]}
und die Elemente des ursprünglichen Arrays in der numerischen Reihenfolge ihres Schlüssels mit den Schlüsseln 1, 2 anhängen ...Zum Beispiel, wenn Sie:
Das erklärt, warum es dafür keinen eingebauten Operator gibt.
Wenn Sie
newvalue
as einfügen${a[0]}
und alle anderen Tasten um eins verschieben möchten, benötigen Sie ein temporäres Array:Shells wie
zsh
oderyash
die normale Arrays haben Operatoren dafür:zsh
:(Funktioniert auch, wenn skalaren Variablen Zeichenfolgen vorangestellt werden)
yash
:quelle
quelle