shell脚本,主要是对输入参数检验
usage()
{
echo "\nUSAGE:\n"
echo "PmActivityReport.sh\t-type\t<latency|activity>\t\t\t(Mandatory)\t/*Report type.*/\n"
echo "\t\t\t-ne\t<RNC-IN|RNC-AN|RNC-CN|BTS|ALL>\t\t(Optional)\t/*Ne type.*/\n"
echo "\t\t\t-from\t<YYYY/MM/DD-HH:00>\t\t\t(Optional)\t/*Begin time.*/\n"
echo "\t\t\t-to\t<YYYY/MM/DD-HH:00>\t\t\t(Optional)\t/*End time.*/\n"
echo "\t\t\t-o\t<>\t\t\t\t\t(Optional)\t/*Output file name.*/\n"
echo "\nNOTE:\n"
echo "The default value of the ne type is \"ALL\"."
echo "The default value of the output file name is \"latencyReport.txt\" or \"activityReport.txt\", depending on the report type."
echo "Time must be given in a strict format: YYYY/MM/DD-HH:MM. Only full time is allowed, and the minutes can not be set different from \"00\".\n"
}
if [ $# -lt 2 ]
then
usage
else
reportType="UNKNOWN"
neType="ALL"
fromTime="UNKNOWN"
toTime="UNKNOWN"
output="UNKNOWN"
totalPara=$#
para=1
paraIsValid=1
while [ $para -le $totalPara ]
do
case "$1" in
-type)
if [ "$2" = "latency" -o "$2" = "activity" ]
then
reportType=$2
else
echo "Wrong parameter for -type!"
paraIsValid=0
fi
;;
-ne)
if [ "$2" = "RNC-IN" -o "$2" = "RNC-AN" -o "$2" = "RNC-CN" -o "$2" = "BTS" -o "$2" = "ALL" ]
then
neType=$2
else
echo "Wrong parameter for -ne!"
paraIsValid=0
fi
;;
-from)
timeIsValid=`echo $2 | grep -c [0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9]-[0-9][0-9]:00$`
if [ $timeIsValid -eq 1 ]
then
Year=`echo $2 | cut -c1-4`
Month=`echo $2 | cut -c6-7`
Day=`echo $2 | cut -c9-10`
Hour=`echo $2 | cut -c12-13`
if [ $Month -ge 13 ]
then
echo "Wrong parameter for -from! Please check the month."
timeIsValid=0
fi
if [ $Day -ge 32 ]
then
echo "Wrong parameter for -from! Please check the day."
timeIsValid=0
fi
if [ $Hour -ge 25 ]
then
echo "Wrong parameter for -from! Please check the hour."
timeIsValid=0
fi
if [ $timeIsValid = 1 ]
then
timeFrom=$2
else
paraIsValid=0
fi
else
echo "Wrong parameter format for -from!"
paraIsValid=0
fi
;;
-to)
timeIsValid=`echo $2 | grep -c [0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9]-[0-9][0-9]:00$`
if [ $timeIsValid -eq 1 ]
then
Year=`echo $2 | cut -c1-4`
Month=`echo $2 | cut -c6-7`
Day=`echo $2 | cut -c9-10`
Hour=`echo $2 | cut -c12-13`
if [ $Month -ge 13 ]
then
echo "Wrong parameter for -to! Please check the month."
timeIsValid=0
fi
if [ $Day -ge 32 ]
then
echo "Wrong parameter for -to! Please check the day."
timeIsValid=0
fi
if [ $Hour -ge 25 ]
then
echo "Wrong parameter for -to! Please check the hour."
timeIsValid=0
fi
fromTimeValue=`echo $timeFrom | sed -e "s/\///g" | sed -e "s/-//" | sed -e "s/://"`
toTimeValue=`echo $2 | sed -e "s/\///g" | sed -e "s/-//" | sed -e "s/://"`
if [ $toTimeValue -le $fromTimeValue ]
then
echo "Wrong parameter for -to! The time for -to is not later than that for -from."
timeIsValid=0
fi
if [ $timeIsValid = 1 ]
then
timeTo=$2
else
paraIsValid=0
fi
else
echo "Wrong parameter format for -to!"
paraIsValid=0
fi
;;
-o)
if [ "$2" != "" ]
then
output=$2
else
echo "Wrong parameter for -o!"
paraIsValid=0
fi
;;
*)
echo "Bad option \"$1\"."
paraIsValid=0
;;
esac
para=`expr $para + 2`
shift
if [ $# -gt 1 ]
then
shift
fi
done
if [ $paraIsValid -eq 0 -o $reportType = "UNKNOWN" ]
then
usage
else
if [ $reportType = "latency" ]
then
output="latencyReport.txt"
fi
if [ $reportType = "activity" ]
then
output="activityReport.txt"
fi
fi
fi
shell脚本,主要是对输入参数检验的更多相关文章
- shell脚本编程-处理用户输入
命令行参数 命令行参数:允许在运行脚本时向命令行添加数据值 如:$ ./addem 10 30 读取参数 bash shell会将一些称为位置参数的特殊变量分配给命令行输入的所有参数,甚至包括shel ...
- shell脚本中的交互式输入自动化
shell中有时我们需要交互,但是呢我们又不想每次从stdin输入,想让其自动化,这时我们就要使shell交互输入自动化了. 1 利用重定向 重定向的方法应该是最简单的 例: 以下的te ...
- shell脚本,提示用户输入一个用户名,如果存在;显示用户UID和SHELL信息;否则,则显示无此用户;显示完成之后,提示用户再次输入;如果是quit则退出;
[root@localhost wyb]# cat tishiuser.sh #!/bin/bash #提示用户输入一个用户名,如果存在:显示用户UID和SHELL信息:否则, #则显示无此用户:显示 ...
- shell脚本实现算术运算且输入的不能为非数字的值
#!/bin/bash c= ] do echo "请输入第一个数" read a echo "请输入第二个数" read b ]* ]] && ...
- shell脚本read -t 超时输入测试
[root@server0 shellStudy]# cat timeout.sh #!/bin/bash TIMEOUT=3 #超时间隔 echo "What is your name?& ...
- 《Linux命令行与shell脚本编程大全》第十一章 构建基本脚本
11.1使用多个命令 $date;who // 命令列表,加入分号就可以,这样会依次执行.参见5.2.1节 注意区分$(date;who),这个是进程列表,会生成一个子shell来执行 Shel ...
- 常用shell脚本
[脚本1]打印形状打印等腰三角形.直角三角形.倒直角三角形.菱形 #!/bin/bash # 等腰三角形 read -p "Please input the length: " n ...
- 【转】干货分享-100个shell脚本
本文用于记录学习和日常中使用过的shell脚本 [脚本1]打印形状 打印等腰三角形.直角三角形.倒直角三角形.菱形 #!/bin/bash # 等腰三角形 read -p "Please i ...
- 如何使用zx编写shell脚本
前言 在这篇文章中,我们将学习谷歌的zx库提供了什么,以及我们如何使用它来用Node.js编写shell脚本.然后,我们将学习如何通过构建一个命令行工具来使用zx的功能,帮助我们为新的Node.js项 ...
- Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载
Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数 ...
随机推荐
- 3. 用过Konva吗,用过他的api吗
基础:使用konva,首先需要创建舞台也就是stage,然后创建一个Layer图层,将图层放到舞台上,将图形等内容放到图层上 ; 第一步:创建一个Stage舞台 , 就是创建一个 stage 实例 ...
- day11-基本运算符
运算符 java语言支持如下运算符: 优先级 ( 多敲,多练习 ) 算术运算符:+,-,*,/,%(模运算:取余),++,-- package operator; public class De ...
- 云原生周刊:HashiCorp Vault 1.14 发布 | 2023.6.26
开源项目推荐 Helmfile Helmfile 是一个开源工具,使用 Helm charts 简化复杂应用程序的部署.它提供了一种声明性的方式来定义 Kubernetes 资源的期望状态,并管理 H ...
- OpenFunction v1.1.0 发布:新增 v1beta2 API,支持 Dapr 状态管理
OpenFunction 是一个开源的云原生 FaaS(Function as a Service,函数即服务)平台,旨在帮助开发者专注于业务逻辑的研发.在过去的几个月里,OpenFunction 社 ...
- 报名开启|QKE 容器引擎托管版暨容器生态发布会!
当下,"云原生"技术红利正吞噬旧秩序,重塑新世界. 但您的企业是否依然困惑:缺少运维人员或运维团队,想要专注于业务的开发,又不得不兼顾集群的日常运维:在生产环境中,为了保证业务的高 ...
- jenkins构建pytest持续集成环境时,遇到的一些问题及处理
前言: 构建的项目为pytest+appium+allure,在pycharm里面已将环境代码调试并测试完毕,放到jenkins里执行的一些问题整理 问题1.pycharm里可以正常运行代码,到了je ...
- Plain-Det:同时支持多数据集训练的新目标检测 | ECCV'24
近期在大规模基础模型上的进展引发了对训练高效大型视觉模型的广泛关注.一个普遍的共识是必须聚合大量高质量的带注释数据.然而,鉴于计算机视觉中密集任务(如目标检测和分割)标注的固有挑战,实际的策略是结合并 ...
- 从0到1实现项目Docker编排部署
在深入讨论 Docker 编排之前,首先让我们了解一下 Docker 技术本身.Docker 是一个开源平台,旨在帮助开发者自动化应用程序的部署.扩展和管理.自 2013 年推出以来,Docker 迅 ...
- 线性规划(LP)问题
约束最优化--线性规划(LP)问题 1 线性规划 1.1 图解法(计算机不适用,便于理解) 1.2 单纯形法 1.3 计算几何的方法(待更新) 1 线性规划 约束优化问题:给定约束条件和目标函数,计算 ...
- Go语言基础06 _function
Go语言基础06 _function 函数在Go语言中是一等公民 与其他主要编程语言的差别 可以有多个返回值 所有参数都是值传递:slice,map,channel 会有传引用的 错觉 函数可以作为变 ...