Tutaj mój problem polega na znalezieniu różnicy za pomocą pojedynczego nawiasu [] i podwójnych nawiasów [[]] w instrukcji if.Błąd skryptu powłoki: wartość zbyt duża dla bazy (błąd token "08")
#!/bin/bash
vara=08;
varb=10;
## single bracket in if statment is working.
if [ $vara -lt $varb ]; then
echo "yes";
else
echo "no";
fi
## double brackets in if statment is not working; throwing an error like below.
## [[: 08: value too great for base (error token is "08")
if [[ $vara -lt $varb ]]; then
echo "yes";
else
echo "no";
fi
bardzo dziękuję za natychmiastową reakcję @JohnB, właściwie mamy to działa w powłoki bash z pojedynczym wspornikiem. nie działa z podwójnymi nawiasami [[. Czy jest jakiś pomysł na zachowanie pojedynczych i podwójnych nawiasów w powłoce podczas używania 08 i 09 w instrukcji if – Thaangaraj
Problem jest wiodącym 0, co spowoduje, że powłoka interpretuje ciąg jako ósemkowy. Wypróbuj to rozwiązanie http://stackoverflow.com/a/12821845/1419315: 'if [[$ {vara # 0} -lt $ {varb # 0}]]' – JohnB
Możesz jawnie określić bazę liczbową za pomocą _n # _ , więc "10 # 08" zostanie rozpoznane. – rojomoke