Linux Shell编程实战(一)

Shell Script介绍

  概念

    Shell脚本是包含一系列命令的文本文件

    Shell读取此文件并执行命令

  应用场景

    重复性操作   

    批量事务处理

    自动化运维

     定时任务执行

  第一个Shell脚本

    编写第一个Shell脚本test.sh    

        #!/bin/bash

        echo “Hello World”

      #! 是一个约定的标记

        它告诉系统脚本需要什么解释器来执行

    运行Shell脚本

        /bin/sh test.sh

        /bin/bash test.sh

        ./test.sh ## 使用该命令,需要给文件可执行权限

  变量分为系统变量和自定义变量

    varA=1234         # 不需要声明变量

    unset varA          # 撤销变量

    varB=${varA/23/'A B C'}    # 将23转换成A B C

    var=${MYTEST}        # 环境变量可以直接使用

    thatVar=varA        # thatVar 直接引用varA变量

    var=${!thatVar}       # 间接引用,将varA的值分配给var

    var=`ls -l`          # 将命令的结果分配给变量

  变量作用域

    全局变量

      当前的整个 Shell 会话中有效

    局部变量

      只能在函数内部使用

    环境变量

      可以在其它 Shell 中使用

 

   预定义变量

  位置变量$n

    $0代表命令本身,$1-$9代表顺序参数编号

    大于10的话使用括号,如${10}

      ./test.sh         #执行命令为 ./test.sh 10 20

      echo "$0 $1 $2"       # ./myShell.sh 10 20

      echo "$*"        # 10 20

      echo "$#"       # 参数个数为2

      echo "$?"        # 0

      echo "$@"       # 10 20

  read读取控制台输入    

    read读取控制台输出语法

      read(选项)(参数)

      -p 后面跟提示信息,即在输入前打印提示信息

      -t 后面跟秒数,定义输入字符的等待时间     

        # 需求:读取控制台输入的名字并打印

        #!/bin/bash

        read -t 30 -p "please enter your name in 30 seconds: " NAME

        echo $NAME

  Shell算术表达式和算术运算符   

    算术表达式语法     

      let c=a+b           #变量计算中不需要加上$来表示变量

        示例:let x=1+10

      “$((运算式))”或“$[运算式]”

      expr m + n

        S=$[(5+3)*4] 或 S=$(((5+3)*4))

        # expr分布计算

        S=`expr 5 + 3`

        expr $S * 4         # 注意:这里乘号之前需要转义

    算术表达式支持各类算术运算符

      + - * / % = == !=

  Shell条件表达式语法

    条件测试语法

      [ 条件表达式 ]

        注意条件表示式前后要有空格

      test 条件表达式

      [[ 条件表达式 ]]

        "[[",是关键字,"["是一条命令, 与test等价

         [[ ... ]]测试结构比用[ ... ]更能防止脚本里的许多逻辑错误

         [[ ]]支持字符串的模式匹配,

          比如[[ hello == hell? ]],结果为真

    条件成立时,结果为true,否则为false

  Shell关系运算符   

    关系运算符只支持数字,返回true或false

Shell逻辑运算符

  逻辑运算符,返回true或false

  && 和 || 可直接用于[[ ]] 语句中

  Shell字符串运算符

    字符串运算符,返回true或false

  Shell文件运算符   

    文件运算符,返回true或false

  流程控制 - if 判断

    if 语句通过判断条件表达式的真假来决定执行哪个分支

      if ... fi 语句;

      if ... else ... fi 语句;

       if ... elif ... else ... fi 语句;

    使用shell判断a和b是否相等

      #!/bin/sh

      a=10

      b=20

      if [ $a == $b ]

      then

        echo "a is equal to b"

      else

        echo "a is not equal to b"

      fi

  流程控制 - case

    case多分支条件判断

      #!/bin/bash

      case $1 in

      "1")

        echo "你输入的数字是1"

      ;;

      "2")

        echo "你输入的数字是2"

      ;;

      *)

        echo "你输入的数字是其他"

      ;;

      esac

  Shell条件表达式对比

    条件表达式示例

      # 我们可以用&&来替代if表达式

      # 如示例,左边为真,则会执行&&右边的内容(打印),否则不执行

      v1="Toronto"

      v2="Beijing"

      v3="Beijing"

      [ "$v1" != "$v2" ] && echo "$v1 is not equal to $v2"

      test "$v1" != "$v2" && echo "$v1 is not equal to $v2"

      [[ "$v1" != "$v2" ]] && echo "$v1 is not equal to $v2"

      [[ "$v1" != "$v2" && "$v2" == "$v3" ]] && echo "$v2 is equal to $v3"

  循环语句 - for循环2-1

    shell支持for循环

      # 语法:

       for 变量 in 值1 值2 值3…

      do

      程序

      done

    

      #示例:

      #!/bin/bash

      for arg in "$@"

      do

        echo "arg: $arg"

      done

  循环语句 - for循环2-2

    for循环的另一种方式:

      # 语法:

      for (( 初始值;循环控制条件;变量变化 ))

        do

         程序

        done

      

      #示例:

      #!/bin/bash

      for((i=1;i<=10;i++));

      do

      echo $(expr $i * 3 + 1);

      done

  循环语句-while循环

    while循环语法

      while [ 条件表达式 ]

        do

          程序

        done

        #或如下语法:

        while [ 条件表达式 ] ;

          do  

         程序

         done

    break可以跳出循环

原文地址:https://www.cnblogs.com/fyzw/p/14029237.html