lord-icon
Goto Top

Bash: "Zeit zwischen" -Berechnen

Moin,

ich komme nicht weiter.

#!/bin/bash

starttime=$(date +%s)

sleep 1

echo -e "\033[31m\033[1m"  
echo "Datei fertiggestellt in "$[$(date +%s)-$starttime] "Sekunden. ("$[$(((date +%s)-$starttime)/60)] "Minuten)."  
echo -e "\033[0m"  

Ergibt:
./test.sh: command substitution: line 8: syntax error near unexpected token `-$starttime'  
./test.sh: command substitution: line 8: `((date +%s)-$starttime)/60'  
Datei fertiggestellt in 1 Sekunden. (0 Minuten).

Ich hab die Klammern jetzt schon an jede erdenkliche Position gestellt. Aber er meckert immer wieder.
So ist denn hier das Problem.

Muß ich / noch maskieren. Blöde Frage eigendlich... hab ich auch schon verzweifelt getetstet.

Content-ID: 5924066898

Url: https://administrator.de/contentid/5924066898

Ausgedruckt am: 22.11.2024 um 07:11 Uhr

5175293307
Lösung 5175293307 09.02.2023 aktualisiert um 18:07:01 Uhr
Goto Top
starttime=$(date +%s)
sleep 1
echo "Datei fertiggestellt in $(($(date +%s)-$starttime)) Sekunden.($((($(date +%s)-$starttime)/60)) Minuten)"  
mit $(()) lässt sich rechnen. Mit $(command) oder `command` lassen sich einzelne Kommandos kappseln.
Oder so wenn du Nachkommastellen in den Minuten haben willst
starttime=$(date +%s)
sleep 1
echo "Datei fertiggestellt in $(($(date +%s)-$starttime)) Sekunden ($(echo "scale=1;($(date +%s)-$starttime)/60" | bc) Minuten)"  
mbehrens
Lösung mbehrens 09.02.2023 um 18:03:32 Uhr
Goto Top
Wenn Sekunden reichen:
beginn=$SECONDS
sleep 3
ende=$SECONDS

printf "Differenz: %d\n" "$((ende-beginn))"  

Sonst:
beginn=$(date +%s%N)
sleep 2.435
ende=$(date +%s%N)

differenz=$((ende-beginn))

printf "Differenz: %s.%s\n" "${differenz:0: -9}" "${differenz: -9:3}"