Hello,
result=( $(echo ${result[*]} | tr ' ' '\n' | sort -n) ) ##Ergebnis sortieren
ersetzt die Leerzeichen durch Absätze und sortierst dann. Wusste nich, dass leerzeichensparierte Zahlen ein Array sind, ist aber irgendwie logisch, oder? Bzw. dass das echo eines solchen Arrays einen leerzeichenseparierten Werte-String ergibt.
Ich kämpfe mich da auch noch durch.
declare -a arrayname=( 1 2 3 4 5 6 7 8 )
legt ein lokales (Namensraum) Array an. mit
echo ${arrayname[0]}
kannst Du das erste Element ausgeben. Mit
echo ${#arrayname[@]} oder echo ${#arrayname[*]}
bekommst Du die Anzahl der Elemente im Array. Ob das nun einen Unterschied macht, ob man * oder @ benutzt für die Ermittlung der Anzahl, habe ich noch nicht herausgefunden. Mit
echo ${arrayname[@]}
bekommst Du die Elemente es Arrays als Array ausgegeben. Mit
echo ${arrayname[*]}
erhältst Du die Elemente mit Leerzeichen getrennt ausgegeben.
Ich habe noch nicht herausgefunden, was man bei Elementen macht, die selber ein Leerzeichen enthalten sollen.
Außerdem kannst Du mit
unset arrayname[3]
ein Element aus dem Array entfernen, hier das vierte. Mit
arrayname=( ${arrayname[*]} )
kannst Du den Index der Arrays reorganisieren. Es gibt nur Numerische Indexe, die müssen aber nicht geschlossen sein. Du kannst also 1,3,4,5,88,100 als Index benutzen. Dann fehlen eben dazwischen ein paar Elemente. Die sind dann NULL
Naja, wann man nun ein Leerzeichen machen muss zwischen den einzelnen Steuerzeichen, Operanden und Operatoren und wann es nicht erlaubt ist, ist schon verzwickt genug. Aber enn ich nun an True und False denke, dann wird mir noch schlechter. Im Allgemeinen gilt wohl, dass 0 true und 1 (oder !=0) false ist. Nu n habe ich aber vorhin ein paar Vergleiche angestellt
echo $(( ${#arrayname[@]} < 4))
0
echo $(( ${#arrayname[@]} > 1))
1
Das passt doch dann aber nicht dazu ...
Ich muss also noch viiiiel lesen und üben :-)
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg