Mam to:
date +"%H hours and %M minutes"
Używam festiwalu, żeby to powiedzieć… ale brzmi: „zero dziewięciu godzin” .. Chcę, żeby powiedział „dziewięć godzin”!
ale data zawsze daje mi 09 ... więc zastanawiam się, czy bash może sprawić, że stanie się to tylko 9?
w złożonym skrypcie, który próbowałem
printf %d 09
ale to się nie udaje ... nie ósemkowe :(
dowolny pomysł?
bash
shell
date
arithmetic
Wodnik Moc
źródło
źródło
Odpowiedzi:
W twoim przypadku możesz po prostu wyłączyć wypełnianie zerami, dołączając
-
po%
w ciągu formatu daty:%-H
Patrz instrukcja daty
Jeśli chcesz interpretować liczbę w innej bazie, w bash
Aby zinterpretować liczbę jako dziesiętną, użyj
10#n
formularza, np.10#09
Zobacz sekcję Oceny arytmetycznej podręcznika bash.
źródło
echo $((011)) $((10#011))
to kolejny dobry przykład, który wyprowadza9 11
lat=048 ; latd=${lat#0} ; echo $((latd-1))
działa, alelat=-048 ; latd=${lat#0} ; echo $((latd-1))
nie działa.plus=$((10#01))
Jeśli próbujesz dokonywać porównań dziesiętnych z wartościami daty, ta metoda okazała się bardzo skuteczna:
To zawsze daje wartość dziesiętną. Więc mogę to zrobić:
W ten sposób nie ma problemu z 08 lub 09. Użycie% 10 zamiast% 100 daje dziesięciominutowe zakresy od 0 do 9. Znalazłem również następujące wartości dziesiętne, bez wiodących zer:
źródło
Przenośnie możesz łatwo usunąć wiodącą
0
zmienną. Pozostawia to zmienną niezmienioną, jeśli nie ma wiodącego0
.W bash, ksh lub zsh możesz użyć dodatkowych wzorców globu ksh, aby usunąć dowolną liczbę wiodących
0
s. W bash biegnijshopt -s extglob
pierwszy. W Zsh, uruchomsetopt kshglob
pierwszy.źródło
Ogólnie rzecz biorąc w bash:
powodując
Lub inny:
Dziwi mnie, że data nie ma odpowiednich opcji formatu.
źródło