Kann ich $SECONDS in eine Umgebungsvariable in einem Bash-Skript einfügen?

Kann ich $SECONDS in eine Umgebungsvariable in einem Bash-Skript einfügen?

Ich möchte die Möglichkeit haben, $SECONDSStunden, Minuten und Sekunden in einer Umgebungsvariablen anzuzeigen, sodass ich sie z. B. nur $RUNTIMEan verschiedenen Stellen im Skript verwenden muss und nicht jedes Mal das Ganze haben möchte, wenn ich es verwenden möchte.

Ich weiß nicht, welche Formatierung ich verwenden muss, damit es in eine Variable eingefügt werden kann:

export RUNTIME="$(($SECONDS / 3600))hrs $((($SECONDS / 60) % 60))min $(($SECONDS % 60))sec"

Ich kann also einfach:

echo "The script ran for: $RUNTIME"

Danke.

Antwort1

Das Definieren von RUNTIME als Variable würde nicht helfen, da es immer einen konstanten Wert ausgibt, nämlich die Laufzeit zum Zeitpunkt der Definition. Versuchen Sie es functionstattdessen mit einer Shell:

runtime() { 
   printf "%dhrs %dmin %dsec\n" $((SECONDS / 3600)) \
                                $(((SECONDS / 60) % 60)) \
                                $(($SECONDS % 60)); 
}
runtime

und rufen Sie es auf/verwenden Sie es mit einer „Befehlsersetzung“.

verwandte Informationen