• 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可以跳出循环

  • 相关阅读:
    51单片机按键连击
    未知设备号创建设备节点
    C语言中enum的用法
    linux 端口IO操作
    读写控制台记录级别
    linux内核驱动中读写函数
    使用gawk记录一段时间内,某个进程占用内存和CPU的情况
    <Linux> Ubuntu error: ssh: connect to host master port 22: No route to host lost connection
    MapReduce的分区与 分组二次排序
    问题
  • 原文地址:https://www.cnblogs.com/fyzw/p/14029237.html
Copyright © 2020-2023  润新知