我很难理解grep返回值的某种异常现象。
如grep手册页中所述,匹配时返回值为零,不匹配/错误/等时返回值为非零。
在此代码中:( bash)
inotifywait -m ./logdir -e create -e moved_to |
while read path action file; do
if grep -a -q "String to match" "$path/$file"; then
# do something
fi
done
匹配时返回非零值。
在此代码中:( bash)
search_file()
{
if grep -a -q "String to match" "$1"; then
# do something
fi
}
inotifywait -m ./logdir -e create -e moved_to |
while read path action file; do
search_file "$path/$file"
done
匹配时返回零。
有人可以向我解释发生了什么事吗?
修改 让我再次明确:如果我在包含该字符串的文件上运行第一个代码,则if语句正在运行。如果我在同一个文件上运行第二个代码,if语句将失败并且不会运行。