• 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
  • Beispiel

    #!/bin/bash
    #declare [-afFirtx] [-p] [name[=value]]
    #typeset [-afFirtx] [-p] [name[=value]]
    # 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