编写shell script

  1. shell script的功能:
    (1)自动化管理的重要依据
    (2)追踪与管理系统的重要工作
    (3)简单入侵检测功能
    (4)连续命令单一化
    (5)简易的数据处理
    (6)跨平台支持与学习历程较短
  2. shell script用在系统管理上面是很好的一项工具,但是用在处理大量数值运算上,就不够好了,因为shell script的速度较慢,且使用的cpu资源较多,造成主机资源的分配不良。
  3. shell script中的命令执行是从上而下、从左到右地分析与执行,命令、参数间的多个空白都会被忽略掉,空白行也会被忽略掉
  4. 当直接命令执行时,shell script文件必须要具备可读和可执行(rx)的权限,而当以bash进程执行时,脚本文件只需要有r的权限即可。
  5. #!/bin/bash语句声明这个script使用的shell名称,当这个程序被执行时,能够加载bash的相关环境配置文件
  6. 我们可以使用var=$((运算内容))的方式来进行运算代替使用declare命令声明变量类型
  7. 当采用直接执行的方式来执行script时,当子进程内的各项变量或操作将会结束而不会传回到父进程中。而采用source命令执行脚本时子进程的各项操作会在原本的bash中生效。

判断式

  1. 利用test命令的测试功能
    -e:该文件名是否存在
    -f:该文件名是否存在且为文件
    -d:该文件名是否存在且为目录
    !:反向状态,当条件不成立时才返回true
  2. 利用判断符号[],使用中括号作为shell的判断式时,必须要注意中括号的两端需要有空格符来分割,中括号内的变量,最好都以双引号括起来,在中括号内的常量最好都以单引或双引号括号起来
  3. script针对参数有一些设置好的变量名称,执行的脚本文件名为$0这个变量,第一个接的参数就是$1,以此类推。除了数字变量,还有一些较为特殊的变量可以在script中使用来调用这些参数:
    $#:代表后接的参数个数
    $@:代表$0$1等全部变量
    $*:代表$0c$1等全部变量,c为分隔字符,默认为空格键
    shift操作会造成参数变量号码偏移,shift后面可以接数字,代表拿掉最前面几个参数的意思

条件判断式

  1. if...then语句可以完成单层、简单逻辑判断式,在这样的语句中,&&代表and,||代表or,fi用于结束if语句,更复杂、多层的条件判断式则可以使用if...then elif...then...else语句
  2. netstat命令可以查询到目前主机打开的网络服务端口
  3. 针对多个既定的变量内容,我们可以使用case...in...esac语句,每个变量内容建议用双引号括起来,关键字则为小括号,每一个变量内容的程序段最后都需要两个分号;;来代表该程序段落的结束。最后的*变量内容代表之前设置的变量内容都不匹配时执行的默认操作
  4. 一般使用“case $变量 in”的语法,当中的那个“$变量”大致有两种取得的方式:
    (1)直接执行式,使用script.sh variable的方式来直接给与$1这个变量的内容
    (2)交互式,通过read命令来让用户输入变量的内容
  5. shell script的执行方式是由上而下、由左到右,因此在shell script当中的function的设置一定要在程序的最前面,这样才能够在执行时被找到可用的程序段
  6. function也是拥有内置变量的,它的内置变量与shell script很类似,函数名称代表是$0,而后续接的变量也是以$1,$2...来替代的。

循环

  1. 不定循环的两种方式:while do done以及until do done
     while [condtion] #判断式
     do              #循环的开始
         程序段落
     done            #循环结束
    

    当condition条件成立时,就进行循环,直到condition的条件不成立才停止

  2. until do done
     until [condition]
     do
         程序段落
     done
    

    与while语句相反,当condition条件成立时,就终止循环,否则就持续进行循环的程序段。

  3. 固定循环for...do..done,它的一种语法是
     for var in con1,con2,con3...
     do
         程序段
     done
    
  4. for...do..done用于数值处理时它的另外一种语法是
     for ((初始值;限制值;执行步长))
     do
         程序段
     done
    

    初始值:某个变量在循环当中的初始值
    限制值:当变量的值在这个限制值的范围内,就继续进行循环
    执行步长:每做一次循环时变量的变化量

  5. shell script的追踪与调试,我们可以直接以bash的相关参数进行判断
     sh [-nvx] scripts.sh
     -n: 不要执行script,仅查询语法的问题
     -v: 在执行script之前,先将script的内容输出到屏幕上
     -x:将使用到的script内容显示到屏幕上