SHELL-在一群源码文件中找对应函数调用到的子函数的脚本

#!/bin/bash
#instruction:1.$1—filename;
#2.$2—searched function name

#cat -n src/network/if_indextoname.c|grep if_indextoname|awk ‘{print $1}’ + 1
cat -n $1|grep if_indextoname|awk ‘{print $1}’

v_start=cat -n $1|grep $2|awk '{print $1}'
v_start=$((v_start + 1))
v_end=0
tmp_count_left=0

echo “========v_start= v s t a r t , v e n d = v_start,v_end= vstart,vend=v_end”

tmp_line=$v_start

while true
do
tmp_char=$(cat -n 1 ∣ g r e p " 1|grep " 1grep"tmp_line"|grep “{”|wc -l)
cat -n 1 ∣ g r e p " 1|grep " 1grep"tmp_line"|grep “{”
#echo “=========tmp_char= t m p c h a r , t m p l i n e = tmp_char,tmp_line= tmpchar,tmpline=tmp_line”

    #计算"{"个数
    if [[ "$tmp_char" -eq 1 ]]; then
            tmp_count_left=$((tmp_count_left + 1))
    fi

    #计算"}"个数
    tmp_char=$(cat -n $1|grep "$tmp_line"|grep "}"|wc -l)
    cat -n $1|grep "$tmp_line"|grep "{"
    if [[ "$tmp_char" -eq 1 ]]; then
            tmp_count_left=$((tmp_count_left - 1))
            if [[ $tmp_count_left -eq 0 ]];then
                    v_end=$((tmp_line + 1))
                    echo "================================================================"
                    echo "=========tmp_char=$tmp_char,tmp_line=$tmp_line,v_end=$v_end"

                    v_string="cat -n $1|sed -n '$v_start,"$v_end"p'"
                    echo "========v_string=$v_string"
                    eval $v_string

                    #查找函数体中调用到的子函数
                    echo "您在文件$1 中找的函数$2 中用到的子函数如下:"
                    eval $v_string|grep "[a-zA-Z0-9_]("

                    exit 0
            fi
    fi
    tmp_line=$((tmp_line + 1))

done

echo “========v_start= $ v_start,v_end=$ v_end”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值