Ich versuche, unter Ubuntu Mate 20.04 ein zukünftiges Datum in eine Epochennummer umzuwandeln.
Also beschließe ich, diesen Code zu schreiben:
daysAmount="10"
endDate=$(date +"%b %_d %Y" -d "+$daysAmount days")
epochNum=$(date -d "$endDate" +%s)
Die ersten beiden Zeilen funktionieren gut, aber ich bekomme nichts angezeigt epochNum=
.
Ist es OK, eine weitere Variable hineinzuschreiben, $(date)
wie ich es getan habe? Wenn nicht, wie kann ich das Ding zum Laufen bringen?
Ich habe es auch versucht endDate=$(date +"%b %_d %Y" -d "+$daysAmount days" +%s)
, aber das hat auch nicht funktioniert.
Antwort1
Sie können Befehle mit einer temporären Gebietsschemaeinstellung ausführen. Dies sollte Ihr Problem lösen:
daysAmount="10"
endDate=$(LC_ALL=C date +"%b %_d %Y" -d "+$daysAmount days")
epochNum=$(LC_ALL=C date -d "$endDate" +%s)
Antwort2
Schaffen Sie es, dass es funktioniert.
Überprüfen Sie Ihre Datumssprache, bevor Sie in eine Epochennummer konvertieren. Wenn Ihr Mount-Name vom US-Alphabet abweicht, wie im Beispiel des Befehls „date“ hier:
1.11.2021 (пн) 14:47:59 EET
Die Konvertierung wird nicht funktionieren.
Auf anderen Rechnern wird „Datum“ folgendermaßen angezeigt (US-Alphabet):
Mon Nov 1 14:47:45 EET 2021
der Code funktionierte einwandfrei
Ein funktionierendes Beispiel auf Maschinen mit unterschiedlichen Sprachen finden Sie hier: https://unix.stackexchange.com/a/675661/499362