Bash循环控制,而if else返回

时间:2014-02-23 23:34:49

标签: bash while-loop

如果我在文件中找到一个值,我需要返回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
}

1 个答案:

答案 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
}