Dlaczego bash myśli, że liczba 010 = 8?
x=010
echo $x
010
echo $(( x+0 ))
8
echo $(( x-2 ))
6
Myślałem, że to może być binarne, ale 010 = 10 = 2. Więc dlaczego dostaje 8, i jak mogę sprawić, żeby myślał 010 = 10 (i 010 - 2 = 8)?
010oznacza 8, ponieważ wstawienie z 0przodu oznacza liczbę ósemkową, podobnie jak 0xw niektórych językach oznacza hex.
0wyzwala liczbę ósemkową, 0xszesnastkową i 0bbinarną.
0mówi, że jest ósemkowy. Jeśli po prostu zrobićx=10następnieecho $((x+0))następnie pokazy10. Ponadto nie ma potrzeby stosowania dodatkowej opcji$w().