天天看点

bash字符串匹配

#!/bin/sh

foo()

{

    local basedir=$1

    local all_entries=`ls -c`

    for entry in $all_entries

    do  

        if test -d $entry; then

            cd $entry&&foo ${basedir}/$entry;cd - >/dev/null

        else

            if [[ $entry =~ .+\.(cpp|cc|h|hpp) ]]; then # 看这里

                #echo $basedir/$entry

                source_files="$source_files $basedir/$entry"

            fi  

        fi  

    done

}

foo .

echo $source_files

An additional binary operator, =~, is available, with the same precedence as == and !=.  When it is used, the string to the right of the operator is considered an extended regular expression and matched accordingly (as in  regex(3)).   The  return value  is  0 if the string matches the pattern, and 1 otherwise.  If the regular expression is syntactically incorrect, the conditional expression's return value is 2.