Per curiosità, quando si esegue un confronto di variabili bash (il cui valore è un integer
) è possibile testarlo con un valore predefinito dichiarato come int
o come string
.
Script di esempio :
#!/bin/bash
f1()
{
[ "$1" == "1" ] && echo "$FUNCNAME: \"1\" compared as string"
}
f2()
{
[[ "$1" -eq 1 ]] && echo "$FUNCNAME: \"1\" compared as int"
}
f1 $1
f2 $1
Uscita :
$ ./param.sh 1
f1: "1" compared as string
f2: "1" compared as int
e
$ ./param.sh blah
$
Entrambe le funzioni si comportano allo stesso modo, quindi mi chiedo se esiste un modo preferito quando si controlla una variabile intera? Vorrei fare un controllo int
rispetto int
al fatto che è più rigoroso, ma mi chiedo se ci siano degli svantaggi nel farlo string
?
In questo caso, f2()
è anche più rigoroso il confronto, vale a dire che passare un valore decimale lo interromperà, mentre non f1()
lo prenderà nessun problema.