蓝天

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.


emacs和posix-basic不支持()特性

find . -path ./task -prune -o -print | awk '/.cpp$|.h$/ { printf("%s ",$0); }'

语议:
if -path ./task; then
    -prune
else
    -print
fi

-o是or的意思


posted on 2013-06-21 19:36  #蓝天  阅读(1123)  评论(0编辑  收藏  举报

导航