✔ 最佳答案
這樣不曉得可不可以滿足你的需求
由遇到function開始計算{和}的個數
當{和}的個數相等則代表是function結束
#!/bin/sh
startflag=0;
lefbknum=0;
rightbknum=0;
IFSbk=$IFS
IFS=$'\n'
while read Line
do
delheadspace="${Line##[[:space:]]}"
if [ "${delheadspace:0:8}" = "function" ]; then
startflag=1;
lefbknum=`echo -n $Line | sed -e 's/[^\{]//g' | wc -c`
rightbknum=`echo -n $Line | sed -e 's/[^\}]//g' | wc -c`
continue
fi
if [ $startflag -eq 1 ]; then
(( lefbknum+=`echo -n $Line | sed -e 's/[^\{]//g' | wc -c` ))
(( rightbknum+=`echo -n $Line | sed -e 's/[^\}]//g' | wc -c` ))
[ $lefbknum -eq $rightbknum ] && startflag=0;
continue
fi
[ $startflag -eq 0 ] && echo $Line
done < $1
IFS=$IFSbk