Apa artinya ((num # Jam)) dalam skrip bash?


18

Saya memiliki skrip bash yang berisi 2 baris berikut:

Hour=$(date +"%H")
Hour=$((10#$Hour))

Apa yang dilakukan baris 2?

Jawaban:


24

The 10#mengatakan itu untuk memperluas nomor menggunakan basis 10:

Konstanta dengan awalan 0 ditafsirkan sebagai angka oktal. Sebuah '0x' atau '0X' yang memimpin menunjukkan heksadesimal. Jika tidak, angka-angkanya mengambil bentuk [basis #] n, di mana basis opsional adalah angka desimal antara 2 dan 64 yang mewakili basis aritmatika, dan n adalah angka dalam basis itu. Jika basis # dihilangkan, maka basis 10 digunakan. Saat menentukan n, digit lebih besar dari 9 diwakili oleh huruf kecil, huruf besar, '@', dan '_', dalam urutan itu. Jika basis kurang dari atau sama dengan 36, huruf kecil dan huruf besar dapat digunakan secara bergantian untuk mewakili angka antara 10 dan 35.

Contoh:

Basis 16:

$ echo $((16#A))
10

Basis 8:

$ echo $((8#12))
10

Basis 2:

$ echo $((2#1010))
10

Seperti yang ditunjukkan oleh steeldriver, hal ini kemungkinan dilakukan untuk menangani potensi nol di awal dari perintah tanggal tetapi dengan versi terbaru dari tanggal GNU dapat dilakukan dengan lebih mudah menggunakan: date +%-H


2
Dalam kasus khusus ini, mungkin perlu disebutkan bahwa (setidaknya dalam versi terbaru dari GNU date) nol terkemuka dapat ditekan pada sumber menggunakan -pengubah format printf-style+%-H
steeldriver


@don_crissti - ya itu orangnya, saya tidak bisa menemukannya
steeldriver
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.