Ich habe das:
date +"%H hours and %M minutes"
Ich benutze Festival, um es zu sagen .. aber es sagt wie: "neun Stunden Null" .. Ich möchte, dass es "neun Stunden" sagt!
aber datum gib mir immer 09 ... also frage ich mich, ob bash das einfach zu 9 machen kann?
in dem komplexen script habe ich gerne probiert
printf %d 09
aber es schlägt fehl .. nicht oktal :(
irgendeine Idee?
bash
shell
date
arithmetic
Wassermann Power
quelle
quelle
Antworten:
In Ihrem Fall können Sie das Auffüllen mit Nullen einfach deaktivieren, indem Sie im Format string of date
-
nach anhängen%
:%-H
Siehe Datumshandbuch
Wenn Sie eine Zahl in einer anderen Basis interpretieren möchten, geben Sie bash ein
Um eine Zahl als Dezimalzahl zu interpretieren, verwenden Sie die
10#n
Form, z.10#09
Siehe Abschnitt " Arithmetische Auswertung " im bash-Handbuch.
quelle
echo $((011)) $((10#011))
ist ein weiteres gutes Beispiel, das ausgibt9 11
lat=048 ; latd=${lat#0} ; echo $((latd-1))
funktioniert, aberlat=-048 ; latd=${lat#0} ; echo $((latd-1))
nicht.plus=$((10#01))
Wenn Sie versuchen, Vergleiche in Dezimalzahl mit Datumswerten durchzuführen, hat sich diese Methode als sehr effektiv erwiesen:
Das ergibt immer einen Dezimalwert. So kann ich das machen:
Es gibt kein Problem mit 08 oder 09 auf diese Weise. Wenn Sie% 10 anstelle von% 100 verwenden, erhalten Sie Zehn-Minuten-Bereiche von 0 bis 9. Ich finde auch, dass die folgenden Dezimalwerte ohne führende Nullen angegeben werden:
quelle
Portabel können Sie einen Lead einfach
0
aus einer Variablen entfernen . Dadurch bleibt die Variable unverändert, wenn kein Zeilenvorschub vorhanden ist0
.In bash, ksh oder zsh können Sie die zusätzlichen glob-Muster von ksh verwenden, um eine beliebige Anzahl führender
0
s zu entfernen . Führen Sie in der Bashshopt -s extglob
zuerst aus. Führen Sie in zshsetopt kshglob
zuerst aus.quelle
Im Allgemeinen in der Bash:
ergebend
Oder anders:
Ich bin überrascht, dass das Datum keine geeigneten Formatoptionen hat.
quelle