Bash-script-Funktion Rückgabewert problem
Kann mir jemand helfen den richtigen Wert zurück, aus einem bash-script-Funktion?
Hier ist meine Funktion zurückkehren sollte ersten (und einzigen) Zeile der Datei als argument übergeben:
LOG_FILE_CREATION_TIME()
{
return_value=`awk 'NR==1' $1`
return return_value
}
Und hier mein Aufruf der Funktion im anderen script:
LOG_FILE_CREATION_TIME "logfile"
timestamp=$?
echo "Timestamp = $timestamp"
Bekomme ich immer einige zufällige Werte mit diesem code. Wenn, zum Beispiel, gibt es einen Wert von 62772031 in der "logfile", bekomme ich
Timestamp = 255
als Ausgang. Für einige andere Werte in der Datei, bekomme ich andere zufällige Werte als return-Wert nie die richtige.
Irgendwelche Ideen?
InformationsquelleAutor Eedoh | 2010-12-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den exit-code beschränkt sich auf
0 - 255
können Sie es nicht verwenden für einen timestamp.Echo Ihrer Zeitstempel statt, da Sie nicht zu sein scheinen bestens und nichts weiter; das sollte in Ordnung sein?
Müssen Sie möglicherweise vereinfacht die Funktion in deinem Beispiel, denn wenn alles, was Sie wollte, war die erste Zeile, warum nicht
head -1 logfile
statt?versuchen Sie es mit backticks,
timestamp=`...`
InformationsquelleAutor plundra
Shell-Funktionen arbeiten wie Befehle. Sie können nur return errorlevel-Werte (Ganzzahlen). Um strings können Sie entweder eine Globale variable oder ein print/echo den Wert und dann haben die Anrufer verwenden Sie den Befehl substitution (wie back-ticks).
Dies funktioniert:
Nichts zu tun haben, aber BTW in Python:
😉
head -1
? Es wird VIEL Antworten, wenn wir setzen es in allen Sprachen...Ich nehme an, es wird mehr auf dieses Programm als dieses. Sicher, head -1 funktioniert am besten für eine einmalige Sache. Ich war deutete an, dass die OP könnte gehen einen anderen Weg als das schreiben ein großes Programm mit Funktionen in der shell.
InformationsquelleAutor Keith
Andere Möglichkeit ist die Verwendung einer globalen variable. Sie können mehrere "return" - Variablen auf diese Weise.
Es ist nicht wirklich etwas zurückkehren, aber funktioniert der trick.
Ausgabe
InformationsquelleAutor Αλέκος