grep
Tabellen in der bash
Tabellen werden in der bash definiert mit :
declare -a name
declare name[subscript] subscript wird ignoriert
oder
typeset -a name
die Tabellenlänge ist nicht limitiert
Beim Ansprechen muß der Name in braces { } gesetztwerden, um
Konflikte mit Pfadnamenexpandierung zu vermeiden
Beispiel:
declare -a tab
typeset -i index
${tab[index]}
der Index ist eine Integer und wird ohne $ angegeben
${name[subscript]} Inhalt Element an Position subscript
${name[*]} Inhalt letztes Element
${name} Inhalt erstes Element
${#name[*]} Anzahl gesetzte Elemente (nicht grösster Index)
${#name[subscript]} Länge Tabellenelement an Position subscript
name[subscript]=value Zuweisung
name=([subscript]=value ... [index]=value) Zuweisung
unset name[subscript] löscht angegebenes Tabellenelement
unset name löscht gesamte Tabelle
unset name[*] löscht gesamte Tabelle
unset name[@] löscht gesamte Tabelle
#!/bin/bash
#declare [-afFirtx] [-p] [name[=value]]
#typeset [-afFirtx] [-p] [name[=value]]
#typeset attributes:
# -a Jeder name ist eine array variable.
# -f Nur function names.
# -F Verhindert Ausgabe der Functiondefinition, nur der
# Name und die ttribute werden ausgegeben
# -i Die Variable wird als Integer behandelt. Wenn der
# Variablen ein Wert zugewiesen wird, wird ein eine
# arithmetische Auflösung vorgenommen.
# -r Der Name wird readonly gesetzt. Danach können der
# Variablen keine Werte mehr zugewiesen werden.
# D.h. eine Anfangswertvergabe muss gleichzeitig oder
# vorher erfolgen.
# typeset -ir max=50
# -t Gibt jedem name das trace attribute. Traced functions
# erben die DEBUG trap von der aufruefenden shell.
# Das trace attribute ist nur für Functions
# wichtig und hat keine Bedeutung fuer einfache Variablen.
typeset -a tab1 tab2
typeset -i i=0 n=0
function show_tab1 {
i=0
n=${#tab1[*]}
while (( i < n ))
do
echo "tab1[$i]="${tab1[i]}
((i = i +1))
done
}
function show_tab2 {
i=0
p=0
n=${#tab1[*]}
while (( p < n ))
do
echo $i " " $p " " $n
if [ "${tab1[i]}" != "" ]
then
echo "tab1[$i]=${tab1[i]}"
(( p=p+1 ))
fi
cont
((i = i +1))
done
}
cont()
{
echo -n " "
read dummy
}
tab1[5]="hallo"
echo ${tab1[*]}
echo ${#tab1[*]}
tab1[6]="next"
echo ${#tab1[*]}
show_tab1
echo " --------------------------"
show_tab2