array skript bash

onebugarmy

Grünschnabel
Hallo,

ich habe hier folgendes Skript. Es gibt mir meine Ordner in einem Ordner aus und die ausführbaren Dateien. Ein String lautet:
verz[${#verz}]=$i
D.h. wenn ich das richtig verstehe ein Array in einem Array?!... ich ahbe da jetzt ein bisschen rumprobiert und steige nicht durch warum das so gelöst wurde.
Kann mir jemand obrigen befehl erklären.

Thnx




#!/bin/sh
verz=()
file=()

for i in *
do
if [ -d $i ]
then
verz[${#verz}]=$i
elif [ -f $i -a -x $i ]
then
file[${#file}]=$i
fi
done
echo "Alle Verzeichnisse sind:"
count=1
for i in ${verz}
do
echo $count - $i
count=`expr $count + 1`
done

echo "Nur Dateien mit Ausfuehrungsrechten:"
count2=1
for i in ${file}
do
echo $count2 - $i
count2=`expr $count2 + 1`
done
exit 0
 
Hallo,

ich habe hier folgendes Skript. Es gibt mir meine Ordner in einem Ordner aus und die ausführbaren Dateien. Ein String lautet:
verz[${#verz}]=$i
D.h. wenn ich das richtig verstehe ein Array in einem Array?!
Nein. ${#verz} gibt die Anzahl der Elemente des Array wieder. Da Arrays in Bash mit dem Index 0 beginnen, fügt diese Zuweisung ein Element ans Ende des Arrays an. Bsp:
Bash:
$ a=( 1 2 3 )  # Array initialisieren
$ echo ${a[*]}  # Array ausgeben
1 2 3
$ echo ${#a[*]}  # Anzahl der Elemente ausgeben
3
$ a[${#a[*]}]=4  # entspricht: a[3]=4
$ echo ${a[*]}  # Array ausgeben
1 2 3 4

Gruß

PS: Bitte verwende für Code die entsprechenden Tags!
 
Zuletzt bearbeitet:
Zurück