三、shell编程+嵌套


1.嵌套

  就是if里套if

  案例

   

2.调试脚本

  调试脚本的方法:

  sh -n 02.sh  仅调试脚本中的语法错误

  sh -vx 02.sh  以调试的方式,查询整个执行过程

  如果使用-vx,可以先注释一部分,让程序简单化

3.注意

  · []表示条件测试。注意这里的空格很重要,要住在'['后面和']'前面都必须要有空格。

  · 在shell中,then和if是分开的语句。如果要在同一行里输入,则需要用分号将他们隔开。

  · 注意if判断中对于变量的处理,需要加引号,一面一些不必要的错误。没有加双引号会在一些空格等字符串变量判断的时候产生错误,比如[-n "$var"] ,如果var为空会出错。

  · 判断是不支持浮点型的。

  · 如果只单独使用>或者<号,系统会认为是输出或者输入重定向,虽然结果显示正确,但是其实是错误的,因为要对这些符号进行转义。

  · 默认,运行if语句中的命令,所产生的错误信息。仍然出现在脚本的输出结果中

  · 使用-z或者-n来检查长度的时候,没有定义的变量也为0

  · 空变量和没有初始化的变量可能会对shell脚本测试产生灾难性的形象,因此在不确定变量内容的时候,在测试号前使用-n或者-z测试一下

  · $?变量包含了之前执行命令的退出状态(最近完成的前台程序)(可以用于检测退出状态)

4.模式匹配case——案例1:简单的模式匹配

  前言

    shell编程中if和case都是用来做流控的。

  邀请用户输入待删除用户名。询问用户,圈定要继续删除吗yes/no:

  if写法

  case写法

    case 变量 in

      模式1)

      命令序列1

        ;;

      模式1)

      命令序列1

        ;;

      模式1)

      命令序列1

        ;;

      *)

      无匹配后命令序列

    esac

     

 5.模式匹配case——案例2:简单的Jump Server

   由于工作中,我们需要管理多台服务器。那么访问服务器就是一件繁琐的事情。通过shell编程,编写跳板程序。当我们需要访问服务器时,看一眼服务器列表名,按一下数字,就登录成功了。

  跳板主机运行跳板脚本。弹出数十台服务器名的菜单

  1)mysql1

  2)mysql2

  3)bj-web1

  q)exit

4.模式匹配case——案例3:系统管理工具箱(重点)

  linux提供丰富的管理命令,用户管理,内存管理,磁盘管理,进程管理,日志管理,文件管理,软件管理,网络管理等等数十个工具包。能通过shell编程,把他们编写到一个程序里。想用某些功能,只需要按回车,,就能完成。

  Command action

  h 显示命令帮助

  f 显示磁盘分区

  d 显示磁盘挂载

  m 查看内存使用

  u 查看系统负载

  q 退出程序

   

相关