IF语句中的ksh脚本相等测试失败

时间:2014-08-15 16:30:52

标签: bash shell scripting ksh

if [[ $TEST = '(0 rows affected)' ]]; then
    echo "NOT FOUND"
else
    echo "FOUND"
fi

就在此之前,我echo $TEST提供输出(0 rows affected)

然而,该脚本会保持评估并回显FOUND,而这不应该是这种情况。

我在这里缺少什么? :)

2 个答案:

答案 0 :(得分:2)

对glob模式使用带引号的变量:

if [[ "$TEST" = *'(0 rows affected)'* ]]; then
    echo "NOT FOUND"
else
    echo "FOUND"
fi

由于变量TEST shell中存在空格,因此将其视为多个参数。

此外,TEST变量在(0 rows affected)之前有一些空格。

答案 1 :(得分:0)

没有看到你的脚本有任何问题...你正在使用哪个shell我在bash,ksh和sh中试过...所有都给出了正确的结果....见下文......

$cat a.sh
TEST='(0 rows affected)'

if [[ $TEST = '(0 rows affected)' ]]; then
    echo "NOT FOUND"
else
    echo "FOUND"
fi

$bash a.sh
NOT FOUND
$ksh a.sh
NOT FOUND
$sh a.sh
NOT FOUND