Bash - grep 条件语句的问题

Bash - grep 条件语句的问题

为什么此代码可以正确工作,而相同条件的其他版本却不能?

if grep -q string file; then
    echo found
else
    echo not found
fi

这不起作用:

if [ ! `grep -q string file` ]; then
    echo not found
else
    echo found
fi

答案1

`grep -q string file`,在反引号中(或在$(...),哪个更好),将被替换为输出grep。由于-q使用了,这将是一个空字符串。

要否定某个测试,只需!在其前面插入:

if ! grep -q pattern file; then
    echo not found
else
    echo found
fi

如果你真的想寻找一个细绳(而不是正则表达式),那么您也应该使用-Fwith 。grep

相关内容