如何定义shell函数
发布网友
发布时间:2022-05-11 18:01
我来回答
共2个回答
热心网友
时间:2023-10-16 15:01
# 第一步,在shell里,我们必需先把input的string变成都用
# 同一个field delimiter,这样好便於我们把每一个field分开
# 所以下面是把所有的符号(+,-)变成单一空格:
# (1)先定义 input 的内容:
input="BSSAPPERF.MSORIGCMSRVCREQ+SYSISUPDPCPERF.ISUPPFMIAMRX-CALLTOTALTIMEPERF.TOTALCALLTIMEMOBILETOLAND"
# (2)用 sed 把所有的加号、减号都变成单一空格
# 把执行的结果存到 input2 裏面:
input2=$(echo ${input} | sed -e "s/+/ /g" -e "s/-/ /g")
#(3)利用下面的指令来打印出每一个 COUNTERx :
let n=1
for i in $input2
do
echo "COUNTER${n}=$i"
let n=n+1
done
# 结果是:
# COUNTER1=BSSAPPERF.MSORIGCMSRVCREQ
# COUNTER2=SYSISUPDPCPERF.ISUPPFMIAMRX
# COUNTER3=CALLTOTALTIMEPERF.TOTALCALLTIMEMOBILETOLAND
#(4)把所有的英文字母都变成空白
# 也把点(.)也变成空白
# 用 tr 指令把连续空白变成单一空白
# 把output存在 input3 裏面:
input3=$(echo $input | sed "s/[A-Z\.]/ /g" | tr -s " ")
# 结果:
# echo $input3
# + -
#(5)利用下面的指令来打印每一个 FUHAOx :
let n=1
for i in $input3
do
echo "FUHAO${n}=$i"
let n=n+1
done
# 结果是:
# FUHAO1=+
# FUHAO2=-
这样清楚了吗?谢谢!
热心网友
时间:2023-10-16 15:01
大致是这么个意思,你自己根据需要优化吧:
temp=`echo "BSSAPPERF.MSORIGCMSRVCREQ+SYSISUPDPCPERF.ISUPPFMIAMRX-CALLTOTALTIMEPERF.TOTALCALLTIMEMOBILETOLAND" | sed -r 'r/[+-]/ /g'`
COUNTER1=echo $temp|awk '{print $1}'
COUNTER2=echo $temp|awk '{print $2}'
COUNTER3=echo $temp|awk '{print $3}'
FUHAO1=+
FUHAO2=-