Angenommen habe ich eine KSH Funktion, die die Summe seiner Argumente zurück, aber wenn die Argumente nicht geliefert werden, fordert es für Benutzereingaben:Wie KSH Funktion Rückkehr machen nur einige Echomeldung
#!/bin/ksh
sum() {
typeset v1=$1
typeset v2=$2
test -z "$v1" && { printf "please enter v1: "; read v1; }
test -z "$v2" && { printf "please enter v2: "; read v2; }
echo $((v1+v2))
}
würde ich wie das Ergebnis dieser Funktion einer variablen zugewiesen werden, normalerweise würde ich es wie folgt
typeset result=`sum 3 4`
echo $result # 7
Aber wenn ich die Aufforderung Version
typeset result=`sum`
echo $result
Es hat 2 unerwünschte Wirkung: erstens werden die Promptnachrichten please enter ...
nicht angezeigt, zweitens wird die result
den Text please enter ...
statt nur Zahl enthalten.
$ typeset result=`sum`
$ 1
$ 2
$ echo $result
please enter v1: please enter v2: 3
Wie kann ich die Funktion bearbeiten sum
so dass, wenn keine Argumente angegeben, sie die Aufforderungsmeldungen please enter ...
drucken statt nach stdout zurückkehr es die die result
Variable?
Ihre Worte treffen mich. Ich habe schon erfahren, warum es schrecklich ist; Sie müssen in der meisten Zeile des Codes berücksichtigen, ob es Eingaben anfordern kann. Ich behalte also Ihren Vorschlag und versuche das Programm so zu refaktorieren, dass nur in Portalfunktionen Eingaben angefordert werden. – asinkxcoswt