总结一下在写shell脚本时的常见注意事项:

1.shell脚本中的命令最好用命令的全路径,如果不知道全路径可以用which cmd查找命令的全路径。

2.shell脚本中定义环境变量用export xxx=/dir1/dir2.....

3.shell脚本中取变量所以变量前都需加$,或者最好是${变量}

4.掌握常见的if、for、case语法的使用方法

5.shell脚本中最好写清楚注释

6. shell脚本中善于使用函数

7.用 $? 来判断上一个shell命令的执行结果,返回值是0代表正常结束,返回值是其他则代表不正常

8. 将一些命令的执行结果重定向到/dev/null,错误结果也需要重定向到/dev/null (/dev/null是linux的无底洞,我们丢进去的东西就都找不回来了)

9.善于使用ps 加grep命令判断一些服务是否启动,根据是否有相应的进程判断对应的服务是否启动。

10 善于使用awk命令提取一些需要的信息

killUser.sh  (输入登录的用户名,然后强制退出用户的脚本)

  1. #!/bin/bash
  2. #input username and kill relactive process for kill user
  3. echo "please input username for kill"
  4. read username
  5. #if username is root ,exit
  6. if [ ${username} = 'root' ]
  7. then
  8. echo "root can not kill"
  9. exit
  10. fi
  11. #get user PID
  12. PID=`/usr/bin/ps -aux | /usr/bin/grep qlq | /usr/bin/awk '$1="qlq" {print $2}'`
  13. for killpid in $PID
  14. do
  15. kill - $killpid
  16. done
  17. echo "killed ok!"

tomcat.sh    (测试tomcat服务是否启动,开启、关闭tomcat)

  1. #!/bin/bash
  2. #chkconfig:
  3. #description:tomcat
  4. #input(start stop status) to operate tomcat service
  5. #start funciton(start tomcat service use /opt/apache-tomcat/apache-tomcat-7.0./bin/start.sh)
  6. export CATALINA_HOME=/opt/apache-tomcat/apache-tomcat-7.0.
  7. start(){
  8. /usr/bin/sh "${CATALINA_HOME}"/bin/startup.sh
  9. if [ "$?" != "" ]
  10. then
  11. echo "service is not success start"
  12. else
  13. echo "service is success start"
  14.  
  15. fi
  16. exit
  17. }
  18. #stop function
  19. stop(){
  20. /usr/bin/sh "${CATALINA_HOME}"/bin/shutdown.sh
  21. if [ "$?" != "" ]
  22. then
  23. echo "service is not success stop"
  24. else
  25. echo "service is success stop"
  26.  
  27. fi
  28. }
  29. #status function
  30. status(){
  31. /usr/bin/ps -le | /usr/bin/grep java >/dev/null > /dev/null
  32. if [ "$?" != "" ]
  33. then
  34. echo "service is not start"
  35. else
  36. echo "service is running"
  37.  
  38. fi
  39. }
  40. #read input and dispose function
  41. input=${}
  42. case ${input} in
  43. start)
  44. start
  45. ;;
  46. stop)
  47. stop
  48. ;;
  49. status)
  50. status
  51. ;;
  52. *)
  53. echo "please use {start to start tomcat,stop to stop tomcat,status to read tomcat status!}"
  54. esac

webmin.ssh  (测试webmin服务是否启动、开启、关闭webmin服务)

  1. #!/bin/bash
  2. #start webmin service
  3. start()
  4. {
  5. /etc/webmin/start >/dev/null > /dev/null
  6. if [ $? = '' ]
  7. then
  8. echo "webmin is success start"
  9. fi
  10. }
  11.  
  12. #stop webmin service
  13. stop()
  14. {
  15. /etc/webmin/stop > /dev/null > /dev/null
  16. if [ $? = '' ]
  17. then
  18. echo "webmin is success stop"
  19. fi
  20. }
  21.  
  22. #status webmin
  23. status()
  24. {
  25. /usr/bin/netstat -ano | /usr/bin/grep > /dev/null
  26. if [ $? != '' ]
  27. then
  28. echo "webmin is not start"
  29. else
  30. echo "webmin is running"
  31. fi
  32. }
  33.  
  34. ########read input##############
  35. str=$
  36. if [ ${str} = 'start' ]
  37. then
  38. start
  39. elif [ ${str} = 'stop' ]
  40. then
  41. stop
  42. elif [ ${str} = 'status' ]
  43. then
  44. status
  45. else
  46. echo "please use {start,stop,status}"
  47. fi

addUserBatch.sh     (批量添加用户的脚本)

  1. #!/bin/bash
  2. #adduser batch
  3. echo "please input username:"
  4. read username
  5. echo "please input number to create:"
  6. read number
  7. #start to create user
  8. for(( i=;i<="${number}";i++ ))
  9. do
  10. /usr/sbin/adduser "${username}${i}" > /dev/null > /dev/null
  11. done
  12. #add finished
  13. echo "add OK!"
  14. echo "please input passwd for users"
  15. read password
  16. for(( i=;i<="${number}";i++ ))
  17. do
  18. /usr/sbin/usermod -p "${password}" "${username}${i}" > /dev/null > /dev/null
  19. done

delUserBatch.sh      (批量删除用户的脚本)

  1. #!/bin/bash
  2. #delete user batch
  3. echo "please input username word to delete"
  4. read word
  5. #get All users like word*
  6. users=`/usr/bin/grep ${word} /etc/passwd | awk -F: -v word1=${word} 'index($1,word1)>0 {print $1}'`
  7. if [ "${users}" = '' ]
  8. then
  9. echo "user is does not exist!"
  10. exit
  11. fi
  12. for username in ${users}
  13. do
  14. /usr/sbin/userdel -rf ${username} > /dev/null >/dev/null
  15. done
  16. if [ "" = "$?" ]
  17. then
  18. echo "delete ok!"
  19. else
  20. echo "delete failed!"
  21. fi

【shell】shell编程总结的更多相关文章

  1. Shell脚本编程30分钟入门

    Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...

  2. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  3. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  4. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  5. Shell高级编程视频教程-跟着老男孩一步步学习Shell高级编程实战视频教程

    Shell高级编程视频教程-跟着老男孩一步步学习Shell高级编程实战视频教程 教程简介: 本教程共71节,主要介绍了shell的相关知识教程,如shell编程需要的基础知识储备.shell脚本概念介 ...

  6. Linux shell脚本编程基础之练习篇

    shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...

  7. 【Linux】Shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  8. 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程

    Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/

  9. Shell脚本编程总结及速查手册

    Shell是一种编程语言, 它像其它编程语言如: C, Java, Python等一样也有变量/函数/运算符/if语句/循环控制/… 但在开始之前, 我想先理清Shell语言与Shell之间的关系. ...

  10. 跟着老男孩一步步学习Shell高级编程实战

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/1264627 本sh ...

随机推荐

  1. MVC与MVP简单对比

    在Java平台,基于Spring等技术的MVC框架已经走向成熟:在.NET平台,微软也推出了MVC.MVP Framework,MVP不同于MVC的地方,关键在于,View不再显示的依赖于Busine ...

  2. Ubuntu的IP地址配置

    概况和需求: 我的主机上有两块网卡,识别后分别是eth0和eth1.eth0配置需要为静态ip,eth1配置为使用动态主机协议获取ip地址. 步骤: 首先碰到的一个问题就是不知道eth0和eth1对应 ...

  3. BZOJ 2109 航空管制(拓扑排序+贪心)

    绝世好题啊.. 题意:给出一个DAG,和每个点要求出现在这个DAG里面的拓扑排序的位置<=ti,求出所有可能的拓扑排序里面每个点出现的位置的最小值. 正着做不好做,考虑反着做,建立这个图的反图. ...

  4. Angel Beats,AFOer Beats?

    意识模糊的时候适合写一些奇怪的东西? NOI退役之后我尝试了很多方法调节心态.(比如做OI题,出OI题,学文化课,读书,吃饭,睡觉,水群,看番,推galgame). 然而看啥都是退役的画风.比如说推W ...

  5. CRM 建设方案(01):CRM基础

    CRM 客户关系管理系统基础 客户关系管理简称CRM(Customer Relationship Management).CRM概念引入中国已有数年,其字面意思是客户关系管理,但其深层的内涵却有着许多 ...

  6. P3984 高兴的津津

    题目描述 津津上高中了.她在自己的妈妈的魔鬼训练下,成为了一个神犇,每次参加一次OI比赛必拿Au虐全场.每次她拿到一个Au后就很高兴.假设津津不会因为其它事高兴,并且她的高兴会持续T天(包包含获奖当天 ...

  7. 51nod 1526 分配笔名(字典树+贪心)

    题意: 班里有n个同学.老师为他们选了n个笔名.现在要把这些笔名分配给每一个同学,每一个同学分配到一个笔名,每一个笔名必须分配给某个同学.现在定义笔名和真名之间的相关度是他们之间的最长公共前缀.设笔名 ...

  8. Unity3D for VR 学习(1): 又一个新玩具 暴风魔镜 4(Android)

    2016年伊始,有了VR虚拟现实硬件设备:  暴风魔镜4–好奇者的新玩具 . 2015年下半年的朋友圈中各种VR.AR的新闻层次不穷,搞的我也心痒痒的:好歹咱也是职业的Unity3D程序员,高大上的O ...

  9. BZOJ1069 [SCOI2007]最大土地面积 【凸包 + 旋转卡壳】

    题目链接 BZOJ1069 题解 首先四个点一定在凸包上 我们枚举对角线,剩下两个点分别是两侧最远的点 可以三分,复杂度\(O(n^2logn)\) 可以借鉴旋转卡壳的思想,那两个点随着对角线的一定单 ...

  10. Python精要参考(第二版)

    ython 精要参考(第二版) 是Python语言初学者不错的参考学习用书,本系列译自Python Essential Reference, Second Edition 希望本系列可以给python ...