Z ciekawości, porównując zmienną bash (jej wartość jest an integer
), można przetestować ją na pewnej predefiniowanej wartości zadeklarowanej jako int
lub string
.
Przykładowy skrypt :
#!/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
Wyjście :
$ ./param.sh 1
f1: "1" compared as string
f2: "1" compared as int
i
$ ./param.sh blah
$
Obie funkcje zachowują się w ten sam sposób, więc zastanawiam się, czy istnieje preferowany sposób sprawdzania zmiennej całkowitej? Wybrałbym sprawdzanie int
kontra int
bardziej rygorystyczne, ale zastanawiam się, czy robią to jakieś wady string
?
W tym przypadku f2()
jest również bardziej rygorystyczny w porównaniu, tzn. Przekazanie wartości dziesiętnej spowoduje jej uszkodzenie f1()
, ale nie spowoduje problemu.