Qui il mio problema è trovare la differenza nell'uso dell'unica parentesi [] e delle parentesi quadre [[]] nell'istruzione if.Errore script shell: valore troppo elevato per la base (il token di errore è "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
grazie mille per la tua risposta immediata @JohnB, in realtà abbiamo ottenuto questo lavoro in shell bash con staffa singola. non funziona con doppie parentesi [[. C'è qualche idea sul comportamento delle parentesi singole e doppie nella shell mentre si usa 08 e 09 in if statement – Thaangaraj
Il problema è lo 0 iniziale, che farà in modo che la shell interpreti la stringa come ottale. Prova questa http://stackoverflow.com/a/12821845/1419315 soluzione: 'if [[$ {vara # 0} -lt $ {varb # 0}]]' – JohnB
Puoi specificare esplicitamente la base numerica con _n # _ , quindi '10 # 08' sarà riconosciuto. – rojomoke