好奇心から、bash変数の比較(値はinteger
)を行う場合、an int
またはaとして宣言された定義済みの値に対してテストでき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()
比較もより厳密になります。つまり、10進数値を渡すと壊れますがf1()
、問題はありません。