仅在文件中找不到字符串时才在bash中执行代码

时间:2015-06-23 15:43:27

标签: bash shell

我只是在SVN_BRANCH中找不到字符/etc/profile时尝试执行代码块。我当前的代码如下所示:

a = cat /etc/profile
    b = `$a | grep 'SVN_BRANCH'`

    not_if "$b"
{
....
... 
...
}

这失败了。应该怎么做?

2 个答案:

答案 0 :(得分:1)

grep可以将文件作为参数,您不需要cat该文件,然后使用管道将内容传递给grep,这是完全没必要的。

这是if else阻止grep的示例:

if grep -q "pattern" filepath;then
echo "do something"
else
echo "do something else"
fi

注意:

-q选项适用于相当的操作。它将隐藏grep命令的输出(将打印错误)。

如果您不希望它也不打印任何错误,请使用:

if grep -sq "pattern" filepath;then

或者这个:

if grep "pattern" filepath >/dev/null 2>&1;then

>/dev/null是将输出重定向到/dev/null

2>&1 redirects both stderr and stdout

答案 1 :(得分:0)

您可以使用grep命令的退出代码来确定是否像这样执行代码块

cat /etc/profile | grep SVN_BRANCH 2>&1 >/dev/null || {
....
....
}