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-Key: 5924066898

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

Printed on: April 27, 2024 at 08:04 o'clock

Mitglied: 5175293307
Solution 5175293307 Feb 09, 2023 updated at 17:07:01 (UTC)
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)"  
Member: mbehrens
Solution mbehrens Feb 09, 2023 at 17:03:32 (UTC)
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}"