我对 KornShell (ksh) 中的 test 命令有疑问。我知道 -ne
用于比较整数而 !=
用于比较字符串。如果一个参数是字符串而另一个是整数,则测试命令将如何运行?我的代码中有以下条件,并且两者都正常工作。
代码:
myCount=1
myCount=`expr $myCount+ 0`
temp=`ps -aef | grep damn | wc -l`
if [ $temp -ne $myCount]; then
echo ERROR Number
fi
if [ $temp != $myCount ]; then
echo ERROR Strings
fi
输出:
ERROR Number
ERROR Strings
最佳答案
类型不相关,因为它是一个简单的文本替换。换句话说,变量 $temp
的值将代替 $temp
(例如)。
至少对于我正在运行的 ksh
版本,对于数字比较,如果值以非数字开头,则等于 0。如果以数字开头但包含非数字,则会出现错误.
例如:
$ export s1=xyz
$ export s2=7xyz
$ export i1=0
$ if [ $i1 -eq $s1 ]
> then
> echo equal
> fi
equal
$ if [ $i1 -eq $s2 ]
> then
> echo equal
> fi
ksh: 7xyz: bad number `7xyz'
但是,根据您的评论,并非所有版本的
ksh
都是如此。基于此,我会尽量确保您对字符串使用字符串比较,对数字使用数字比较。其他任何东西都可能是不可移植的。
关于shell - KornShell (ksh) 中的测试命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4034216/