写一个脚本, 完成如下要求
(1)脚本可接受参数 : start, stop, restart, status,
(2)如果参数非非法, 提示使用格式后报错退出;
(3)如果是start, 则创建/tmp/test/SCREPT_NAME, 并显示"启动成功";
考虑, 如果事先已启动一次, 如何处理?
(4)如果是stop, 则删除/tmp/test/SCREPT_NAME文件, 并显示"停止完成";
考虑: 如果事先已经停止, 如何处理?
(5)如果是restart, 先stop, 再start
考虑: 如果原本没有start, 如何处理?
(6)如果是status, 则
如果/var/lock/subsys/SCREPT_NAME存在, 则显示"SCRIPT_NAME is runing..."
如果/var/lock/subsys/SCREPT_NAME不存在, 则显示"SCRIPT_NAME is stopped..."

其中: SCRIPT_NAME为当前服务名;


根据要求, 需判断两个字符串, 例如 start network

按照文件'network'存在与否, 先分为两个循环

  按照指令'start', 确认对文件的操作

代码如下:

#!/bin/bash
#
#TEST SERVICE
# Version 0.01 declare -a dir="/tmp/test/"
echo "TEST SERVICE: 以空格分割"
echo "例如: start network"
echo "===quit 退出====="
echo "================="
while read -p 'Command # :' a;do
flag=`echo $a | cut -d ' ' -f1` && name=`echo $a | cut -d' ' -f2` &> /dev/null if [ -e $flag -o $name ];then #如果两个字符串都存在
if [ $flag == 'quit' ];then exit;fi
if [ -f $dir$name ] ;then #如果$name文件已经存在, 即服务已经启动
echo "$dir$name已存在";
case $flag in
start) echo "$name服务已启动";;
stop) rm -f $dir$name; echo "$name服务已停止";;
restart) rm -f $dir$name; touch $dir$name; echo "$name已经重新创建并启动";;
status) echo "$name is runing...";;
*) echo "Wrong using! input example : start network";;
esac
else #如果$name文件不存在
echo "$name不存在";
case $flag in start) touch $dir$name;echo "$name服务已创建成功";;
stop) echo "停止失败,${name}服务已被其他用户或程序停止";;
restart) touch $dir$name; echo "$name尚未启动,启动中";;
status) echo "$name is stopped...";;
*) echo "Wrong using! input example : start network";; esac
fi
else #如果$flag或者$name有一个不存在, 即输入参数错误
echo "Wrong using! input example : start network" #输入错误, 提示语法
fi
done

注意: 起初在判断文件是否存在时使用 file $dir$name , 但是无论怎样判断都是返回文件已经存在, 表面原因如下:

即, 无论 $dir$name 存在与否,  file $dir$name 的状态返回值都将是0, 即表示成功

所以不能使用file命令来判断文件是否存在.

man file 返回值项如下:

RETURN CODE
file returns 0 on success, and non-zero on error.


If the file named by the file operand does not exist, cannot be read, or the type of the file named by the file operand cannot be determined, this
is not be considered an error that affects the exit status.   //如果文件不存在, 打不开, 文件格式不确定, 这些情况都不会返回error的状态码;


运行结果:

最新文章

  1. ElasticSearch第二步-CRUD之Sense
  2. java中的23中设计模式(转)
  3. 前端easyui的简化调用
  4. AngularJS 学习之表格
  5. Flyweight
  6. php CI框架目录结构及运行机制
  7. ojdbc5.jar
  8. VS 与 SQLite数据库 连接
  9. 正则转nfa:完成
  10. USB枚举过程的详细流程
  11. vue实现标签云效果
  12. JavaScript获取客户端IP地址
  13. 汽车VIN码识别适用于什么行业
  14. FragmentTabHostBottomDemo【FragmentTabHost + Fragment实现底部选项卡】
  15. c++遍历某个文件夹中所有文件
  16. MATLAB中的集合运算
  17. testng入门教程14数据驱动(不同文件)
  18. zoj1649-Rescue (迷宫最短路径)【bfs 优先队列】
  19. NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(转载)
  20. Can only modify an image if it contains a bitmap

热门文章

  1. ios学习--第三方框架-MBProgressHUD以及扩展
  2. Codeforces 659F Polycarp and Hay 并查集
  3. java的可查的异常和不可查的异常讲解
  4. .net中MVC Webapi多参数调用控制器方法
  5. Scrapy中scrapy.Request和response.follow的区别
  6. CSS3-----transform 转换
  7. 洛谷 P2633 Count on a tree 主席树
  8. Linux下编译,安装Apache httpd服务器
  9. POJ 2228 Naptime(DP+环形处理)
  10. Java Class文件结构