2016-07-27 5 views
0

Ich möchte in der Lage sein, den Wert und $authorName von der addBook Funktion zu echo. Unten ist mein Code.Abrufen von 2 Benutzereingaben in einer Funktion von einer anderen Funktion darunter

function checkFunc { 
    echo "$bookName" 
    echo "$authorName" 
} 

function book{ 
    echo -n "Title: " 
    read $bookName 
    echo -en "\nAuthor: " 
    read $authorName 
    checkFunc 
} 

Allerdings, wenn ich die Funktion book laufen, hat die checkFunc nicht ausgegeben $bookName und $authorName. Ich bin mir bewusst, dass, wenn ich checkFunc Funktion unten book Funktion bewegen, ich werde nicht in der Lage sein checkFunc zu nennen, da es noch nicht genannt.

Gibt es eine Möglichkeit, dies zu tun, wenn ich checkFunc in der Lage sein, Werte aus der book Funktion einzulesen, und wiederum echo es?

Vielen Dank!

Antwort

0

read einfach den Namen der Variablen als Argument zu füllen:

read bookName # not read $bookName 

mit Ihrem Code, bookName wird erweitert, und dieser Wert wird als Name der Variablen verwendet, . Da bookName nicht zitiert wird, verwendet read seinen Standard REPLY wenn bookName nicht bereits einen vorherigen Wert hat. (Wenn Sie Ihre Parametererweiterungen wie gewohnt angeben, würde read "$bookName" Ihnen einen Fehler geben, wenn bookName keinen Wert hätte.)

+0

Danke für die ausführliche Erklärung. Das hat mein Problem gelöst! – JamesPoppycock

0

Das Problem ist mit dem $ in den Lesefunktionen. Dies funktioniert:

function checkFunc { 
echo "$bookName" 
echo "$authorName" 
} 

function book{ 
echo -n "Title: " 
read bookName 
echo -en "\nAuthor: " 
read authorName 
checkFunc 
} 
+0

Schätzen Sie die Antwort. Problem gelöst (: – JamesPoppycock

Verwandte Themen