#!/usr/bin/env bashTABLENAME=symbolsSYMBOL_DB_FILE="symbols"#func.list 路径
STRING_SYMBOL_FILE="$PROJECT_DIR/GBFunc.list"# 项目文件路径
CONFUSE_FILE="$PROJECT_DIR/Safedemo"#Confuse.h 路径
HEAD_FILE="$PROJECT_DIR/GBConfuse.h"export LC_CTYPE=C# 取以. m 或. h 结尾的文件以 + 号或 - 号开头的行 | 去掉所有 + 号或-号 | 用空格代替符号 | n 个空格跟着 <号 替换成 <号 | 开头不能是 IBAction | 用空格 split 字串取第二部分 | 排序 | 去重复 | 删除空行 | 删掉以 init 开头的行> 写进 func.list
grep -h -r -I "^[-+]" $CONFUSE_FILE --include '*.[mh]' |sed "s/[+-]//g"|sed"s/[();,: *^/{]/ /g"|sed"s/[]*</</"| sed "/^[]*IBAction/d"|awk'{split($0,b," "); print b[2]; }'| sort|uniq |sed"/^$/d"|sed -n"/^GBSAFE_/p" >$STRING_SYMBOL_FILE
#维护数据库方便日后作排重, 以下代码来自念茜的微博
createTable()
{
echo "create table $TABLENAME(src text, des text);" | sqlite3 $SYMBOL_DB_FILE
}insertValue()
{
echo "insert into $TABLENAME values('$1','$2');" | sqlite3 $SYMBOL_DB_FILE
}query()
{
echo "select * from $TABLENAME where src='$1';" | sqlite3 $SYMBOL_DB_FILE
}ramdomString()
{
openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c 16}rm -f $SYMBOL_DB_FILE
rm -f $HEAD_FILE
createTabletouch $HEAD_FILE
#这里也要做修改
echo '#ifndef GBConfuse_h
#define CodeConfuse'>> $HEAD_FILE
echo "//confuse string at `date`" >> $HEAD_FILE
cat "$STRING_SYMBOL_FILE" | while read -ra line; do
if [[! -z"$line"]]; then
ramdom=`ramdomString`
echo $line $ramdom
insertValue $line $ramdom
echo "#define $line $ramdom" >> $HEAD_FILE
fi
done
echo "#endif" >> $HEAD_FILE
sqlite3 $SYMBOL_DB_FILE .dump
来源: http://www.bubuko.com/infodetail-2443938.html