Skript mit interaktiver Abfrage des Beginns der Arbeitszeit:
#!/bin/bash
# Eingabe: Startzeit abfragen
read -p "Arbeitsbeginn (HH:MM): " STARTZEIT
# Aktuelles Datum und Uhrzeit
JETZT=$(date +%s)
WOCHENTAG=$(date +%u) # 1 = Montag, 7 = Sonntag
# Startzeit als Sekunden seit Epoche
STARTZEIT_SEK=$(date -d "$STARTZEIT" +%s)
# Arbeitsdauer je nach Wochentag (in Stunden)
if [ "$WOCHENTAG" -eq 4 ]; then
# Donnerstag
ARBEITSDAUER=10.75
else
# Montag bis Mittwoch, Freitag
ARBEITSDAUER=8.3
fi
# Zielzeit berechnen
SEKUNDEN_ZU_ARBEITEN=$(awk "BEGIN {print int($ARBEITSDAUER * 3600)}")
ENDZEIT_SEK=$(($STARTZEIT_SEK + $SEKUNDEN_ZU_ARBEITEN))
# Differenz zur aktuellen Uhrzeit
REST_SEKUNDEN=$(($ENDZEIT_SEK - $JETZT))
# Bereits Feierabend?
if [ "$REST_SEKUNDEN" -le 0 ]; then
echo "✅ Feierabend! Du hast deine Zeit erfüllt oder überzogen."
exit 0
fi
# Ausgabe der verbleibenden Zeit
STD=$(echo "$REST_SEKUNDEN / 3600" | bc)
MIN=$(echo "($REST_SEKUNDEN % 3600) / 60" | bc)
FEIERABEND=$(date -d "@$ENDZEIT_SEK" +"%H:%M")
echo "🕒 Du musst noch $STD Stunden und $MIN Minuten arbeiten."
echo "🕔 Dein Feierabend ist um ca. $FEIERABEND."
Skript, bei dem die Uhrzeit als Parameter beim Aufruf übergeben wird:
#!/bin/bash
# --- Übergabe prüfen ---
if [ -z "$1" ]; then
echo "❌ Bitte gib die Startzeit als Argument an."
echo "🧭 Beispiel: $0 07:30"
exit 1
fi
STARTZEIT="$1"
# --- Eingabe validieren ---
if ! date -d "$STARTZEIT" &>/dev/null; then
echo "❌ Ungültige Zeitangabe. Format: HH:MM (z. B. 07:45)"
exit 1
fi
# --- Aktuelles Datum und Uhrzeit ---
JETZT=$(date +%s)
WOCHENTAG=$(date +%u) # 1 = Montag, 7 = Sonntag
# --- Startzeit in Sekunden seit Epoche ---
STARTZEIT_SEK=$(date -d "$STARTZEIT" +%s)
# --- Arbeitsdauer je nach Wochentag (in Stunden) ---
if [ "$WOCHENTAG" -eq 4 ]; then
# Donnerstag
ARBEITSDAUER=10.75
else
# Montag bis Mittwoch, Freitag
ARBEITSDAUER=8.3
fi
# --- Zielzeit berechnen ---
SEKUNDEN_ZU_ARBEITEN=$(awk "BEGIN {print int($ARBEITSDAUER * 3600)}")
ENDZEIT_SEK=$((STARTZEIT_SEK + SEKUNDEN_ZU_ARBEITEN))
# --- Differenz zur aktuellen Uhrzeit ---
REST_SEKUNDEN=$((ENDZEIT_SEK - JETZT))
# --- Bereits Feierabend? ---
if [ "$REST_SEKUNDEN" -le 0 ]; then
echo "✅ Feierabend! Du hast deine Zeit erfüllt oder überzogen."
exit 0
fi
# --- Ausgabe ---
STD=$((REST_SEKUNDEN / 3600))
MIN=$(( (REST_SEKUNDEN % 3600) / 60 ))
FEIERABEND=$(date -d "@$ENDZEIT_SEK" +"%H:%M")
echo "🕒 Du musst noch $STD Stunden und $MIN Minuten arbeiten."
echo "🕔 Dein Feierabend ist um ca. $FEIERABEND."