Por curiosidade, ao fazer uma comparação de variáveis bash (seu valor é um integer
), é possível testá-lo em relação a algum valor predefinido, declarado como int
ou como string
.
Exemplo de script :
#!/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
Saída :
$ ./param.sh 1
f1: "1" compared as string
f2: "1" compared as int
e
$ ./param.sh blah
$
Ambas as funções se comportam da mesma maneira, e então eu estou querendo saber se há uma maneira preferida ao verificar uma variável inteira? Eu iria para a verificação int
versus int
, pois é mais rigoroso, mas gostaria de saber se há alguma desvantagem em fazê-lo string
?
Nesse caso, f2()
também é mais rigoroso quanto à comparação, ou seja, passar um valor decimal o quebrará, enquanto f1()
isso não causará problemas.