#!/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 "
1∣grep"tmp_line"|grep “{”|wc -l)
cat -n
1
∣
g
r
e
p
"
1|grep "
1∣grep"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”