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
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的意思