为什么我的bash如果失败?

时间:2011-11-25 05:29:15

标签: bash

命令

grep shutting log.log

什么都不返回。

我的脚本如下

#!/bin/bash
FAIL=`grep shutting log.log`
if [ "$FAIL"="Binary file log.log matches"  ]; then
    echo FOUND
else
    echo NOT FOUND
fi

我期待找不到但得到FOUND

2 个答案:

答案 0 :(得分:8)

您必须在=表达式中放置[ ... ]运算符周围的空格;您所写的内容被解释为[ string ],它会测试string是否为非空。

但是你根本不需要反引号或字符串比较。试试这个:

if grep -q shutting log.log
then echo FOUND
else echo NOT FOUND
fi

(值得庆幸的是,那些没有-q grep选项的系统早已进入了天空中的大桶。)

答案 1 :(得分:1)

在测试中,您需要=周围的空格:

#!/bin/bash
FAIL=`grep shutting log.log`
if [ "$FAIL" = "Binary file log.log matches"  ]; then
    echo FOUND
else
    echo NOT FOUND
fi

请参阅http://tldp.org/LDP/abs/html/comparison-ops.html