##########################################
## ##
## 服务器监控系统(函数部分) ##
## ##
## 版本号:1.0.0 ##
## ##
## 程序:周杰 ##
## ##
## 版权所有:武汉卓杰教育网络科技有限公司 ##
## ##
## 日期:2002年3月 ##
## ##
##########################################
##################
## 定义基本函数 ##
##################
####################函数err_par_num(err_fun_name,err_par_num)####################
err_par_num() {
echo "发现错误!函数$1的参数个数为$2!不符合函数$1的要求!请修正该错误!"
}
####################函数err_par_num(err_fun_name,err_par_num)####################
####################函数s_re(len,sym,color)####################
#函数s_re用于(慢速的)重复输入一定数量的符号
#其中$1为待输出符号的长度,$2为待输出的符号类型,$3为待输出的颜色类型
#如果$2为空,则输出$1个长度的空格
#如果$3为空,则输出为白色
s_re() {
if [ $# -ge 1 ] && [ $# -le 3 ]
then
if [ $3 ]
then
echo -n "$3"
else
echo -n "$N_WHT_C"
fi
num=0
while [ $num -lt $1 ]
do
if [ $2 ]
then
echo -n "$2"
else
echo -n " "
fi
num=`expr $num + 1`
done
echo -n "$CLS_C"
else
err_par_num "S_Re()" "$#"
fi
}
####################函数s_re(len,sym,color)####################
####################函数f_re(len,sym,color)####################
#函数f_re用于(快速的)重复输入一定数量的符号
#其中$1为待输出符号的长度,$2为待输出的符号类型,$3为待输出的颜色类型
#如果$2为空,则输出$1个长度的空格
#如果$3为空,则输出为白色
f_re() {
if [ $# -ge 1 ] && [ $# -le 3 ]
then
if [ $3 ]
then
echo -n "$3"
else
echo -n "$N_WHT_C"
fi
num=0
tmps=""
while [ $num -lt $1 ]
do
if [ $2 ]
then
tmps=$tmps$2
else
tmps=$tmps" "
fi
num=`expr $num + 1`
done
echo -n "$tmps"
echo -n "$N_WHT_C"
else
err_par_num "F_Re()" "$#"
fi
}
####################函数f_re(len,sym,color)####################
####################函数s_line(len,sym,color)####################
#函数s_line用于(慢速的)输出一行符号
#其中$1为待输出符号的长度,$2为待输出的符号类型,$3为待输出的颜色类型
#如果参数$1不为空,则执行输出;如果$1为空,则报错并退出
#如果$3为空,则输出为白色
s_line() {
if [ $# -ge 1 ] && [ $# -le 3 ]
then
#计算两边要添加的空格的数量
sides_num=0
sides_num=`expr $MAX_LEN - $1`
sides_num=`expr $sides_num / 2`
#输出前面的空格
s_re $sides_num
#输出中间的符号
s_re $1 "$2" "$3"
#输出后面的空格
s_re $sides_num
echo ""
else
err_par_num "S_Line()" "$#"
fi
}
####################函数s_line(len,sym,color)####################
##################
## 定义综合函数 ##
##################
####################函数c_f_f_title(len,sides_len,sym,side_color,title_array,title_color)####################
#函数c_f_f_title用于(综合的)(快速的)(快速的)输出一个标题框
#其中$1为标题总的长度,$2为两侧符号的长度
#$3为两侧的符号类型,$4为待输出的两侧颜色类型
#$5为中间标题的内容的集合,$6为待输出的标题颜色类型
#若$5(即中间标题的内容)为空,则仅输出两侧的符号
#如果参数$1不为空,则执行输出;如果$1为空,则报错并退出
#如果$4或$6为空,则输出为白色
c_f_f_title() {
if [ $# -ge 2 ] && [ $# -le 6 ]
then
######no_echo_f_line $1 "$3" "$4"######
######累计并保存line到变量f_f_line_str中######
f_f_line_str=""
#计算两边要添加的空格的数量
sides_num=0
sides_num=`expr $MAX_LEN - $1`
sides_num=`expr $sides_num / 2`
tmps=""
#累计前面的空格
tmps=`f_re $sides_num`
#累计中间的符号
tmps=$tmps`f_re $1 "$3" "$4"`
#累计后面的空格
tmps=$tmps`f_re $sides_num`
#将累计保存
f_f_line_str="$tmps"
######累计并保存line到变量f_f_line_str中######
######no_echo_f_line $1 "$3" "$4"######
######no_echo_f_title $1 $2 "$3" "$4"######
######累计并保存空title到变量f_f_title_str中######
f_f_title_str=""
#计算外侧要添加的空格的数量
out_sides_num=0
out_sides_num=`expr $MAX_LEN - $1`
out_sides_num=`expr $out_sides_num / 2`
#计算内侧要添加的空格的数量
in_sides_num=0
in_sides_num=`expr $1 - $2 \* 2` ###注意这里已经将后面的屏蔽"- ${#5}"
in_sides_num=`expr $in_sides_num / 2`
tmps=""
#累计外侧前面的空格
tmps=`f_re $out_sides_num`
#累计前面的符号
tmps=$tmps`f_re $2 "$3" "$4"`
#累计内侧前面的空格
tmps=$tmps`f_re $in_sides_num`
#累计内侧后面的空格
tmps=$tmps`f_re $in_sides_num`
#累计后面的符号
tmps=$tmps`f_re $2 "$3" "$4"`
#累计外侧前面的空格
tmps=$tmps`f_re $out_sides_num`
#将累计输出
f_f_title_str="$tmps"
######累计并保存空title到变量f_f_title_str中######
######no_echo_f_title $1 $2 "$3" "$4"######
######no_echo_f_f_title $1 $2 "$3" "$4" "$5" "$6"######
######累计并保存内容title到数组f_f_title_array[]中######
declare -a tmps_array=(`echo $5`)
tmps_num=0
while [ $tmps_num -lt ${#tmps_array[*]} ]
do
#计算外侧要添加的空格的数量
out_sides_num=0
out_sides_num=`expr $MAX_LEN - $1`
out_sides_num=`expr $out_sides_num / 2`
#计算内侧要添加的空格的数量
in_sides_num=0
in_sides_num=`expr $1 - $2 \* 2 - ${#tmps_array[$tmps_num]}`
in_sides_num=`expr $in_sides_num / 2`
tmps=""
#累计外侧前面的空格
tmps=`f_re $out_sides_num`
#累计前面的符号
tmps=$tmps`f_re $2 "$3" "$4"`
#累计内侧前面的空格
tmps=$tmps`f_re $in_sides_num`
#累计中间的符号
if [ ${tmps_array[$tmps_num]} ]
then
tmps=$tmps`f_re 1 "${tmps_array[$tmps_num]}" "$6"`
#如果中间标题内容长度为奇数,则加一个空格
tmps_odd=0
tmps_odd=`expr ${#tmps_array[$tmps_num]} / 2`
tmps_odd=`expr $tmps_odd \* 2`
if [ $tmps_odd -ne ${#tmps_array[$tmps_num]} ]
then
tmps=$tmps" "
fi
fi
#累计内侧后面的空格
tmps=$tmps`f_re $in_sides_num`
#累计后面的符号
tmps=$tmps`f_re $2 "$3" "$4"`
#累计外侧前面的空格
tmps=$tmps`f_re $out_sides_num`
#将累计保存的数组f_f_title_array[]中
f_f_title_array[$tmps_num]="$tmps"
tmps_num=`expr $tmps_num + 1`
done
######累计并保存内容title到数组f_f_title_array[]中######
######no_echo_f_f_title $1 $2 "$3" "$4" "$5" "$6"######
######输出所有累计并保存着的变量######
echo "$f_f_line_str"
echo "$f_f_title_str"
tmps_num=0
while [ $tmps_num -lt ${#tmps_array[*]} ]
do
echo "${f_f_title_array[$tmps_num]}"
echo "$f_f_title_str"
tmps_num=`expr $tmps_num + 1`
done
echo "$f_f_line_str"
######输出所有累计并保存着的变量######
else
err_par_num "C_F_F_Title" "$#"
fi
}
####################函数c_f_f_title(len,sides_len,sym,sides_color,title_array,title_color)####################
####################函数c_s_info(len,sides_len,sides_sym,sides_color,middle_sym,middle_color,front_info_array,front_color,back_info_array,back_color)####################
#函数c_s_info用于(综合的)(慢速的)输出一个两侧有符号,两侧有信息,中间有符号的信息框
#其中$1为信息总的长度,$2为两侧符号的长度
#$3为两侧的符号类型,$4为待输出的两侧符号颜色类型
#$5为中间的符号类型,$6为中间符号颜色类型
#$7为前面信息的内容的集合,$8为前面信息颜色类型
#$9为后面信息的内容的集合,$10为后面信息颜色类型
#若$5(即中间标题的内容)为空,则仅输出两侧的符号
#如果参数$1不为空,则执行输出;如果$1为空,则报错并退出
#如果$4或$6为空,则输出为白色
c_s_info() {
if [ $# -ge 2 ] && [ $# -le 10 ]
then
s_line $1 "$3" "$4"
declare -a tmps_front_array=(`echo $7`)
declare -a tmps_back_array=(`echo $9`)
tmps_num=0
while [ $tmps_num -lt ${#tmps_front_array[*]} ]
do
#计算外侧要添加的空格的数量
out_sides_num=0
out_sides_num=`expr $MAX_LEN - $1`
out_sides_num=`expr $out_sides_num / 2`
#计算中间要添加的符号类型的数量
in_middle_num=0
in_middle_num=`expr $1 - $2 \* 2 - $BLANK_LEN \* 2 - ${#tmps_front_array[$tmps_num]} - ${#tmps_back_array[$tmps_num]}`
#输出外侧前面的空格
s_re $out_sides_num
#输出前面的符号
s_re $2 "$3" "$4"
#输出内侧前面的空格
s_re $BLANK_LEN
#输出前面的信息
if [ ${tmps_front_array[$tmps_num]} ]
then
s_re 1 "${tmps_front_array[$tmps_num]}" "$8"
fi
#输出中间的符号类型
s_re $in_middle_num "$5" "$6"
#输出后面的信息
if [ ${tmps_back_array[$tmps_num]} ]
then
s_re 1 "${tmps_back_array[$tmps_num]}" "${10}"
fi
#输出内侧后面的空格
s_re $BLANK_LEN
#输出后面的符号
s_re $2 "$3" "$4"
#输出外侧后面的空格
s_re $out_sides_num
echo ""
s_line $1 "$3" "$4"
tmps_num=`expr $tmps_num + 1`
done
else
err_par_num "C_S_Info" "$#"
fi
}
####################函数c_s_info(len,sides_len,sides_sym,sides_color,middle_sym,middle_color,front_info,front_color,back_info,back_color)####################
网友评论