Es sieht nicht so aus, als würde date
eine Eingabeformat-Zeichenfolge unterstützt. Daher können Sie die Saite nicht einfach weitergeben. Die Manpage gibt an, dass sie die üblichen Formate akzeptiert, daher könnte dies durch Ihre Ländereinstellung beeinflusst werden, aber ich bin mir nicht sicher.
Weiter können wir uns Ihr Skript ansehen:
#!/bin/bash sec=$(TZ="UTC" date +'%s' -d "$1") $(TZ="Europe/Helsinki" date -d "@$sec" "+%Y:%m:%d %H:%M:%S")
Was hier passiert, ist, dass Sie den $1
Parameter in einen Linux-Zeitstempel konvertieren und ihn dann erneut in einen von Ihnen gewünschten String konvertieren. Ein möglicher Ansatz, um dies mit Ihrer Eingabe zum Laufen zu bringen, wäre die Neuformatierung des $1
String-Parameters.
Sie können dies als Beispiel tun, indem Sie sed
einen geeigneten Regex verwenden. Beachten Sie, dass Sie vorher sicherstellen sollten, dass Sie eine gültige Zeichenfolge haben und dass bei Formatänderungen dies möglicherweise beschädigt wird.
#!/bin/bash intputdate=$(echo $1 | sed -re 's/([0-9])\.([0-9])\.([0-9])/\3-\2-\1/') sec=$(TZ="UTC" date +'%s' -d "$intputdate") echo $(TZ="Europe/Helsinki" date -d "@$sec" "+%Y:%m:%d %H:%M:%S")
Edit: Nicht die falschen Variablennamen zu haben, hilft sicherlich.