staging.inyokaproject.org

Erzeugte Eingabe im Script wird nicht an ein anderes Script weitergeleitet

Status: Ungelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

Thiri

Anmeldungsdatum:
23. April 2019

Beiträge: Zähle...

Hallo zusammen

Ich bin noch neu in der Materie.

Ich habe Versucht einen kleines Textual Menü zu schreiben, dass mir gewisse Sachen ausführt. Das klappt auch soweit. Ich versuche an einer Stelle dem Skript werte zu übergeben die es dann beim ausführen von einem anderem Skript Aufruf soll. Er übernimm mir leider nicht meine davor gegebene Eingabe. Das andere Skript macht einen Check File, dass auch funktioniert wenn ich es über die Konsole starte. tmp ist nur ein Directory, dass ich zum testen erstellt hab.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
Aufrufen() {
echo "Bitte in Form -d|-f <name> eingeben: ";    #Aufforderung welche Eingabe ich machen soll
read $1 $2                                       #Versuch ich über diese Eingabe einzulesen (-d tmp)
./Aufgabe5a $1 $2                                #eingentlich soll hier dann stehen -d tmp beim parameter $1 und $2 und über ein anderes Script mir tmp kontrollieren
}
echo "-----------------
h hello world 
u print usage
c check file  
m print menu 
x exit 
-----------------"

for datei in *
do
		read Auswahl
			case $Auswahl in
			h | H ) ./Aufgabe1;;
			u | U ) cat Aufgabe4;;
			c | C ) Aufrufen;;  #Funktionsaufruf 
	

Ich hoffe ihr könnt mir weiter helfen.

Vielen Dank

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

$1 und $2 sind die ersten zwei Kommandozeilenparameter, die Du übergibst, auch wenn Du keine übergibst, so dass sie dann leer sind. Benenne die Variablen stattdessen und lass bei der Zuweisung die Dollarzeichen weg:

1
2
3
4
Aufrufen() { echo "Bitte in Form -d|-f <name> eingeben: "; read $dd $ff ; echo $dd $ff; }
Aufrufen
Bitte in Form -d|-f <name> eingeben: 
foo bar

aber:

1
2
3
4
5
Aufrufen() { echo "Bitte in Form -d|-f <name> eingeben: "; read dd ff ; echo $dd $ff; }
Aufrufen
Bitte in Form -d|-f <name> eingeben: 
foo bar
foo bar

Read kennt übrigens den Schalter -p für "Prompt", dann spart man das echo:

1
2
3
4
Aufrufen() { read -p "Bitte in Form -d|-f <name> eingeben: " dd ff ; echo $dd $ff; }
Aufrufen
Bitte in Form -d|-f <name> eingeben: baz foz
baz foz

Thiri

(Themenstarter)

Anmeldungsdatum:
23. April 2019

Beiträge: 2

Vielen dank für deine Antwort.

Auf das erste kam ich selbst irgendwann. Ist aber sehr schön ein passendes Beispiel zu haben ☺ Das andere ist ein gute Tipp. Versuch ihn dann noch umzusetzen.

Gruß Thiri

Antworten |