Verständnisproblem mit array in bash

L

locuststar

Grünschnabel
Hi zusammen

für jedes der Elemente in meinem Skript möchte ich eine Aktion starten und bei Erfolg das Element aus dem Array löschen.

Das funktioniert auf die mir einleuchtende Art nur beim ersten Schleifendurchlauf:
###################################
#!/bin/bash
set -x

array=( teller telle tell tel te t )

for i in ${array[@]}

do

unset array[$i]
#array=( ${array[@]} )
echo ${array[@]}

done
#############################

Das echo am Ende spuckt ab dem zweiten Durchgang bis zum Ende "telle tell tel te t"
aus, teller wurde gelöscht.
Wenn ich das array neu definiere (den Kommentar in der Schleife wegnehme) funzt es.
Ich begreife aber nicht warum.

Viele Grüße

tom
 
Hallo
Versuch es mal so:
Code:
wolle@Nietzsche:~
$ array=( teller telle tell tel te t );#Array definiert
length=${#array[*]}; #index für das letzte Element
for ((i=0;$i<$length;i++));
do
 unset array[$i];
echo ${array[*]};
done

telle tell tel te t
tell tel te t
tel te t
te t
t
i muss eine Zahl sein, bei dir ist es aber ein String.
Die Bash kennt keine Hashtable.

Gruß Wolfgang
 

Ähnliche Themen

Java Development Kit Installation

Zurück
Oben