我正在尝试进行简单的比较,以使用bash检查行是否为空:
line=$(cat test.txt | grep mum )
if [ "$line" -eq "" ]
then
echo "mum is not there"
fi
但它没有用,它说:[:太多的论点
非常感谢你的帮助!
答案 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';
}