Z ciekawości, porównując zmienną bash (jej wartość jest an integer), można przetestować ją na pewnej predefiniowanej wartości zadeklarowanej jako intlub 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 intkontra intbardziej 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.