我要检查文件是否存在,然后检查文件中的子字符串
if [ -f /etc/abc.conf ]; then
if [ grep 'abc.conf' -e 'host.com' ]
test = 'PASS'
else
test = 'FAIL'
fi
else
echo "File doesnot exist"
fi
echo $test
请告诉我是否有更好的方法来做同样的事情
答案 0 :(得分:2)
是的,您的grep可能支持-s
参数:
-s, --no-messages
Suppress error messages about nonexistent or unreadable files.
所以这样的事情应该起作用:
grep -qs 'abc.conf' '/etc/abc.conf' && test='PASS' || test='FAIL'
答案 1 :(得分:1)
如果文件不存在或不可读,则Grep返回2;如果找不到字符串,则Grep返回1。
grep -qs '<string>' file.txt
res=$?
if [ $res -eq 0 ]; then
test='PASS'
elif [ $res -eq 1 ]; then
test='FAIL'
elif [ $res -eq 2 ]; then
echo "Cannot read file"
else
echo "Unrecognized return code ($res) from grep"
fi