检查bash命令返回的行数

时间:2014-02-26 14:30:45

标签: bash

我有一个类似的命令:

LIST=$(git log $LAST_REVISION..$HEAD --format="%s" | egrep -o "[A-Z]-[0-9]{1,4}" | sort -u)

现在,如果$LIST返回0或更多行,我需要做一些事情。这是我尝试过的:

if [ ! $($LIST | wc -l) -eq 0 ]; then
    echo ">0 lines returned"
else
    echo "0 lines returned"
fi

但它给我一个错误。执行此操作的正确语法是什么(如果可能,请使用所使用语法的一些详细信息)?

1 个答案:

答案 0 :(得分:3)

要检查变量是否为空,请使用test -z,这可以通过多种方式编写:

test -z "$LIST"

[ -z "$LIST" ]

使用bash(或许多其他“现代”shell):

[[ -z $LIST ]]

我喜欢最后一个,只要你使用bash。

请注意您正在做的事情:$($LIST | ...)执行 $LIST作为命令。这几乎肯定会产生错误,并且如果$LIST为空,则保证会这样做。