出于好奇,在进行bash变量比较(其值为an integer
)时,可以对照声明为an int
或as的一些预定义值对其进行测试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()
没有问题。
请注意,Bash确实没有Integer数据类型。您基本上可以暗示Bash将String视为整数。
—
helpermethod 2014年