Mengapa bash berpikir angka 010 = 8?
x=010
echo $x
010
echo $(( x+0 ))
8
echo $(( x-2 ))
6
Saya pikir itu mungkin biner, tetapi 010 = 10 = 2. Jadi mengapa ia mendapatkan 8, dan bagaimana saya bisa membuatnya berpikir 010 = 10 (dan 010 - 2 = 8)?
0
mengatakan itu oktal. Jika Anda hanya melakukanx=10
ituecho $((x+0))
kemudian menunjukkan10
. Juga, tidak perlu untuk tambahan$
dengan di()
.010
berarti 8 karena dengan meletakkan0
di depan berarti oktal, mirip dengan bagaimana menempatkan0x
dalam beberapa bahasa berarti hex.0
pemicu oktal,0x
hex , dan0b
biner.Jawaban:
Urutan angka
0
yang dimulai dengan a ditafsirkan sebagai angka oktal.Oktal
10
= desimal8
.Untuk mendapatkan bash untuk memperlakukannya sebagai angka desimal, hapus nol di depan atau desimal paksa dengan:
Umumnya yang bekerja untuk semua pangkalan, cukup ganti
10
dengan pangkalan yang Anda inginkan:sumber
:-
dalam komentar saya di atas seharusnya:-0
}