如果我在文件中找到一个值,我需要返回true或false。我解析文件,如果值只是一次就足够了,我想打破并返回一个true,返回false。最重要的是,我需要将文件传递给此检查功能。我试图只使用bash。
is_file_contains_VAR(){
VARFILENAME=$1
while read LINE
do
if echo "$LINE" | grep -q "$VAR"; then
break
return 0
else
return 1
fi
done < $VARFILENAME
}
答案 0 :(得分:4)
grep -q
已经做了你想做的事:它会在找到有问题的字符串后立即中止。所以你可以写:
function is_file_contains_VAR () {
grep -q -e "$VAR" "$1"
}
(注意:-e
以"$VAR"
以连字符开头。)
但出于教育目的。 。 。把它写成一个循环,你想要的是return 0
一旦匹配,只有return 1
在最后,如果你找不到匹配:
function is_file_contains_VAR () {
local VARFILENAME="$1"
local LINE
while IFS= read -r LINE ; do
if grep -q -e "$VAR" <<< "$LINE" ; then
return 0
fi
done < "$VARFILENAME"
return 1
}