问题描述
我想使用一个变量作为比较运算符。可能吗?像这样:
x=10
y=20
t="<"
res=`expr $x $y $t`
或
x=10
y=20
t="-lt"
if [ $x $y $t ]; then
..
fi
我认为哪种方法都行。
解决方法
您为什么不仅仅进行测试*?对的,这是可能的。 Shell是解释性语言。命令test
([
是别名)与其他任何命令一样接受参数。这些也可以是变量。
示例:
#!/usr/bin/env sh
x=10
y=20
t="-lt"
if [ $x $t $y ]; then
echo "a"
fi
if [ $y $t $x ]; then
echo "b"
else
echo "c"
fi
t="-ge"
if [ $y $t $x ]; then
echo "d"
fi
输出:
a
c
d
*您的示例不起作用,因为您在值(变量$t
和$x
)之后(而不是在它们之间)后面有运算符(变量$y
)。