使用bash检查一行是否为空

时间:2010-07-21 14:57:03

标签: bash shell

我正在尝试进行简单的比较,以使用bash检查行是否为空:

line=$(cat test.txt | grep mum )
if [ "$line" -eq "" ]
        then
        echo "mum is not there"
    fi

但它没有用,它说:[:太多的论点

非常感谢你的帮助!

7 个答案:

答案 0 :(得分:25)

您还可以使用设置为命令返回状态的$?变量。所以你有:

line=$(grep mum test.txt)
if [ $? -eq 1 ]
    then
    echo "mum is not there"
fi

对于grep命令,如果有任何匹配$?设置为0(干净地退出),如果没有匹配$?则为1.

答案 1 :(得分:8)

if [ ${line:-null} = null ]; then
    echo "line is empty"
fi

if [ -z "${line}" ]; then
    echo "line is empty"
fi

答案 2 :(得分:5)

在bash中也可以使用的经典sh答案是

if [ x"$line" = x ]
then
    echo "empty"
fi

您的问题也可能是您正在使用'-eq'进行算术比较。

答案 3 :(得分:4)

grep "mum" file || echo "empty"

答案 4 :(得分:4)

if line=$(grep -s -m 1 -e mum file.txt)
then
    echo "Found line $line"
else
    echo 'Nothing found or error occurred'
fi

答案 5 :(得分:2)

我认为最清晰的解决方案是使用正则表达式:

if [[ "$line" =~ ^$ ]]; then
    echo "line empty"
else
    echo "line not empty"
fi

答案 6 :(得分:-2)

如果您想使用PHP

$path_to_file='path/to/your/file';
$line = trim(shell_exec("grep 'mum' $path_to_file |wc -l"));
if($line==1){
   echo 'mum is not here';
}
else{
   echo 'mum is here';
}