So zählen Sie das Datum mit Bash herunter

So zählen Sie das Datum mit Bash herunter

Sie möchten wissen, wie viele Tage es bis zu einem wichtigen Ereignis sind? Lassen Sie sich von Linux Bash und dem Datumsbefehl helfen!

Da ein wichtiger Feiertag vor der Tür steht, benötigen Sie möglicherweise eine Erinnerung daran, wie viel Zeit Sie für die Vorbereitung haben.

Glücklicherweise kann Ihnen der Datumsbefehl dabei sehr helfen. In diesem Beitrag sehen wir uns an, wie Datums- und Bash-Skripte Ihnen mitteilen können, wie viele Tage zwischen dem heutigen Tag und dem erwarteten Ereignis liegen.

Zunächst ein paar Tipps, bevor wir fortfahren. Die Option %j des Datumsbefehls zeigt das aktuelle Datum als Zahl zwischen 1 und 366 an. Wie zu erwarten wird der 1. Januar als 1 und der 31. Dezember als 365 oder 366 angezeigt, je nachdem, ob es ein Schaltjahr ist. Versuchen Sie es weiter. Sie sollten ungefähr Folgendes sehen:

$ Datum +%j
339

Sie können den Tag des Jahres jedoch als Zahl abrufen, indem Sie den Datumsbefehl wie folgt verwenden:

$ date -d "18. März" +%j
077

Beachten Sie, dass der obige Befehl Ihnen das aktuelle Jahresdatum anzeigt, auch wenn dieses Datum in der Vergangenheit liegt. Sie können dies jedoch beheben, indem Sie dem Befehl das Jahr hinzufügen:

$ date -d "29. April" +%j
119
$ date -d "29. April 2020" +%j
120

In einem Schaltjahr hätte das Jahr bis zum 29. April 120 Tage statt 119 Tage.

Wenn Sie die Tage bis Weihnachten herunterzählen möchten, ohne Fingerabdrücke in Ihrem Kalender zu hinterlassen, können Sie dieses Skript verwenden:

#!/bin/sh
XMAS=`date -d "25. Dez" +%j`
HEUTE=`Datum +%j`
TAGE=$(($XMAS - $HEUTE))
Fall $DAYS in
 0) echo "Heute ist es! Frohe Weihnachten!";;
 [0-9]*) echo "$DAYS verbleibende Tage";;
 -[0-9]*) echo "Ups, das hast du verpasst";;
esac

In diesem Skript nehmen wir den 25. Dezember und das heutige Datum und subtrahieren sie dann. Bei einem positiven Ergebnis zeigen wir die Anzahl der verbleibenden Tage an. Wenn der Wert Null ist, wird die Nachricht „Frohe Weihnachten“ versendet. Wenn der Wert negativ ist, teilen Sie der Person, die das Skript ausführt, einfach mit, dass sie die Feiertage verpasst. Vielleicht waren sie süchtig nach Eierlikör.

Die Case-Anweisung besteht aus Anweisungen, die zum Drucken von Informationen verwendet werden, wenn die verbleibende Zeit gleich 0 oder einer beliebigen Zahl oder einer Zahl ist, die mit einem Minuszeichen beginnt (d. h. in der Vergangenheit liegt).

Der gleiche Ansatz kann für jedes Datum verwendet werden, auf das sich die Leute konzentrieren möchten. Wir können die Person, die das Skript ausführt, bitten, ein Datum anzugeben und ihr dann mitzuteilen, wie viele Tage zwischen jetzt und diesem Datum verbleiben. Das Skript lautet wie folgt.

#!/bin/sh
echo -n "Geben Sie das Datum der Veranstaltung ein (z. B. 6. Juni): "
dt lesen
EREIGNIS=`Datum -d "$dt" +%j`
HEUTE=`Datum +%j`
TAGE=`Ausdruck $EVENT - $TODAY`
Fall $DAYS in
 0) echo "Es ist heute!";;
 [0-9]*) echo "$DAYS verbleibende Tage";;
 -[0-9]*) echo "Ups, das hast du verpasst";;
esac

Bei diesem Skript treten jedoch Probleme auf: Wenn jemand, der es ausführt, wissen möchte, wie viele Tage bis zu diesem besonderen Tag im folgenden Jahr verbleiben, wird er enttäuscht sein. Auch wenn bei der Datumseingabe das Jahr angegeben wird, gibt date -d nur die Anzahl der Tage im Jahr zurück, nicht die Anzahl der Tage zwischen jetzt und dann.

Die Anzahl der Tage zwischen dem heutigen Tag und einem bestimmten Datum in einem bestimmten Jahr zu berechnen, kann etwas knifflig sein. Sie müssen alle dazwischenliegenden Jahre einbeziehen und die Schaltjahre beachten.

Unix-Epochenzeit verwenden

Eine andere Möglichkeit, die Anzahl der Tage zwischen jetzt und einem bestimmten Datum zu berechnen, besteht darin, die Art und Weise auszunutzen, wie Unix-Systeme Daten speichern. Dies lässt sich leicht bewerkstelligen, indem wir die Anzahl der Sekunden seit dem 1. Januar 1970 in die Anzahl der Tage umrechnen, wie im folgenden Skript gezeigt:

#!/bin/bash
echo -n "Geben Sie das Zieldatum ein (z. B. 18. März 2021)> "
Zieldatum lesen
heute = `echo $(($(date --utc --date "$1" +%s)/86400))`
Ziel = `echo $(($(Datum --utc --date "$target_date" +%s)/86400))`
Tage=`Ausdruck $Ziel - $Heute`
echo "$days Tage bis $target_date"

Zur Erklärung: 86400 ist die Anzahl der Sekunden eines Tages. Teilen Sie diese Zahl durch die Anzahl der Sekunden seit dem Beginn der Unix-Epoche, um die Anzahl der Tage zu erhalten.

$ ./Countdown
Geben Sie das Zieldatum ein (z. B. 18. März 2021)> 18. März 2020
104 Tage bis 18. März 2020

Zusammenfassen

Oben ist die vom Editor eingeführte Methode zur Verwendung von Bash zum Herunterzählen des Datums. Ich hoffe, es wird allen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der Verwendung des Bash-Befehls
  • So listen Sie alle in der Bash-Shell integrierten Befehle auf – Beispiel
  • Detaillierte Erklärung der Unterschiede zwischen Quelle, sh, bash und ./ bei der Ausführung von Shell-Skripten
  • So prüfen Sie mit der Bash-Shell, ob eine Datei vorhanden ist
  • Tutorial zur Verwendung von Python-Skripten zur Implementierung einiger Bash-Shells in Linux
  • Shell-Programmierung: Bash Spaces

<<:  Binäre Installation von MySQL 5.7.23 unter CentOS7

>>:  Offlineinstallation von Centos7.2 mysql5.7.18.tar.gz

Artikel empfehlen

Die umfassendsten 50 Mysql-Datenbankabfrageübungen

Diese Datenbankabfrageanweisung ist eine von 50 D...

Grundlegende Ideen und Codes zur Implementierung von Videoplayern in Browsern

Inhaltsverzeichnis Vorwort Zusammenfassung der Au...

Ein auf Vue-cli basierender Codesatz unterstützt mehrere Projekte

Inhaltsverzeichnis Anwendungsszenario Ideen Proje...

Tutorial zum Herunterladen und Installieren von XFTP (grafisches Tutorial)

Wenn Sie Dateien zwischen Windows und Linux übert...

Einführung in semantische XHTML-Tags

Der erste Punkt ist, dass Menschen die Semantik vo...

Erläuterung des Prozesses des Docker-Packaging-Node-Projekts

Als Backend-Programmierer muss ich manchmal an Fr...

Vue implementiert den Download von ZIP-Dateien

In diesem Artikelbeispiel wird der spezifische Co...

Vue+SSH-Framework zur Realisierung von Online-Chat

In diesem Artikel wird der spezifische Code des V...

So installieren Sie das Pip-Paket unter Linux

1. Laden Sie das Pip-Installationspaket entsprech...

Verwendung des Fokus-innerhalb-Selektors von CSS3

Pseudoelemente und Pseudoklassen Apropos, schauen...

So erstellen Sie einen Nginx-Server mit Docker

Betriebsumgebung: MAC Docker-Version: Docker vers...

Vue implementiert ein Beispiel für eine verschachtelte Routing-Methode

1. Verschachteltes Routing wird auch als Sub-Rout...

Implementierung der Breakpoint-Wiederaufnahme im Vue-Video-Player

In einem aktuellen Projekt musste ich die Funktio...