Из любопытства, при выполнении сравнения переменных bash (его значение является integer
) можно проверить его по некоторому предопределенному значению, объявленному как int
или как string
.
Пример скрипта :
#!/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
Выход :
$ ./param.sh 1
f1: "1" compared as string
f2: "1" compared as int
а также
$ ./param.sh blah
$
Обе функции ведут себя одинаково, и поэтому мне интересно, есть ли предпочтительный способ проверки целочисленной переменной? Я бы пошел на проверку int
против, так int
как это более строгое, но мне интересно, есть ли какие-либо недостатки сделать это string
?
В этом случае f2()
также более строгое сравнение, т. Е. Передача десятичного значения сломает его, в то время как f1()
это не вызовет проблем.