Vain schrieb:
Servus,
nein, hast du nicht. Du kannst nur genau ein Array übergeben und das ist das implizite Array der Aufrufargumente.
Das man so Strings und dergleichen übergeben kann, war mir schon klar, aber kann ich denn tatsächlich das komplette Array übergeben?
Ich mein, ich hab das zwar nicht gefragt, aber gebrauchen könnte ich das schon, wenn das funktionieren würde.
Ich hab mal folgendes getestet:
1
2
3
4
5
6
7
8
9
10
11
12 | #!/bin/bash
#haupt.sh
schritte="0"
array[0]="empty"
while [ $schritte -le "15" ]
do
array[$schritte]="Schritt:\ "$schritte
((schritte ++))
done
./unter.sh "${array[@]}"
|
| #!/bin/bash
#unter.sh
array=($@)
echo "${array[4]}"
|
Als Ausgabe habe ich aber statt "Schritt: 4" nur
bekommen. Kannst Du mir eventuell noch ein Tipp geben, wie ich im Unterskript das Array noch aufnehmen kann? Mit "array=$1" oder dergleichen, wie es bei einfachen Strings funktionieren würde, bekomme ich nur den String bis zum ersten Leerzeichen. Auch wenn ich das Leerzeichen maskiere (wie oben geschehen) hilft das nicht.
Aber ganz ehrlich: Wenn du an diesem Punkt angelangt bist und insbesondere „komplexe“ Datenstrukturen benötigst, dann solltest du dir vielleicht doch langsam Gedanken darüber machen, ob die Shell das richtige Werkzeug ist. Ab diesem Punkt arbeitest du eigentlich gegen die Shell und nicht mit ihr, da sie nicht für solche Aufgaben gemacht ist.
Also wie gesagt, ich könnte das alles in einem Skript schreiben, das wird dann zwar vermutlich bis zu 500 Zeilen lang und dadurch etwas unübersichtlich, aber funktionieren tuts bislang zumindest super (erfüllt seine Aufgabe und scheint kaum rechenintensiv zu sein, jedenfalls ist das Skript auf meinen Rechner immer sofort fertig mit Rechnen)
Ziel des Teilens des Skriptes ist ja eigentlich nur, eine gewissen Übersichtlichkeit für mich zu erhalten und teilweise auch bestimmten Code mehrmals/wieder zu verwenden. Nötig wäre es nicht. Allerdings hast Du mich auf eine Frage gebracht, die ich schon lange mal geklärt haben wollte. Hab dafür einen neuen Thread verwendet, um "Thread-Hijacking", was laut Forenregeln verboten ist, zu vermeiden.
mfg henry