我可以使用变量作为比较运算符吗?

问题描述

我想使用一个变量作为比较运算符。可能吗?像这样:

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)。