Variablenwert zum Ausdruck hinzufügen

Variablenwert zum Ausdruck hinzufügen

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

verwandte Informationen