Ho avuto risultati contrastanti in questo settore da solo. Ecco i risultati dei miei esperimenti empirici. Innanzitutto, alcune " teorie " sui comandi bash o * nix:
- SUCCESSO == 0 ... vale a dire. nessun codice stato errore)
- FAIL! = 0 ...... un codice di stato
Esempio:
if ls -lt /nonexistantdir
then
echo "found"
else
echo "FAIL"
fi
#
echo
ls -lt /nonexistantdir; echo "status = $?"
echo "status = $?"
Produzione:
ls: cannot access '/nonexistantdir': No such file or directory
FAIL...
ls: cannot access '/nonexistantdir': No such file or directory
status = 2
Come mostrato, il ls
comando restituisce il codice di stato = 2. Quando si tenta una directory valida, lo stato è zero ( 0 ). Non uguale a quasi tutte le altre lingue.
regola n. 1 - Crea ...
Dobbiamo ricordare che stiamo testando i codici di errore in if
un'istruzione Bash . Ho impostato costanti, oppure puoi usare shell true
o false
comandi.
TRUE=0
FALSE=1
# valid number function
#
valNum()
{
flag=$TRUE
if [[ $1 != [1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ]]; then
echo "Invalid Number"
flag=$FALSE
fi
return $flag
}
# later on ...
#
if validNum Abc
then
echo "Lucky number"
else
echo "Not lucky."
fi
e uscita:
Invalid Number
Not lucky.
Tuttavia, ti suggerisco di dare un " voto positivo" a @Gilles perché la sua risposta è corretta. Volevo solo scoprire il lato semplicistico di ePaper.
Solo un'altra cosa, il test
comando. Questo sembra:
[[ some-expression ]];
La maggior parte delle volte. E per esempio:
$ test 1
$ echo "result = $?"
result = 0
$ test 0
$ echo "result = $?"
result = 0
Zero (0) è vero . Perché? Bene, la pagina man dice che un singolo argomento è " vero " quando NON è NULL.
Riferimenti: