Чому Баш вважає число 010 = 8?
x=010
echo $x
010
echo $(( x+0 ))
8
echo $(( x-2 ))
6
Я думав, що це може бути двійковим, але 010 = 10 = 2. То чому він отримує 8, і як я можу змусити його думати 010 = 10 (а 010 - 2 = 8)?
У багатьох парних аналізаторах
—
Дерек 朕 會 功夫
010означає 8, тому що, якщо поставити 0спереду, означає восьмерику, подібно до того, як введення 0xв деяких мовах означає шістнадцятковий.
Це насправді важлива річ, яку потрібно знати при програмуванні. У більшості мов
—
Сет
0спрацьовує восьмерична, 0xшістнадцяткова та 0bдвійкова.
Пояснення у відповідь?
—
Тім
@tim, чому б це не було 8? ;-) О, не мій downvote, хоча, але, мабуть, тому, що це занадто просто. Це досить нормальна поведінка.
—
Rinzwind
0каже, що це вісімковий. Якщо ви просто робитеx=10те ,echo $((x+0))то шоу10. Крім того, немає необхідності в додатковому$в().