Linux 复习四

第四章 shell程序设计I-入门

一、shell脚本的基本概念

      shell脚本(script)是一个可执行的纯文本文件,有多个shell命令组成。

      命令的执行时从上而下、从左而右的分析和执行

      命令、参数间的多个空白都会被忽略

      空白行以及[tab]键所致的空白也会被忽略

      读取到第一个[enter]符号即开始执行命令

      如果脚本中需要换行则需用[enter]转义

      #是注释,任何加在#符号后的命令及文本全部被视为注释

      #!用于指定本shell script使用的shell名称

      shell脚本一般以.sh为后缀名

二、shell脚本的执行方法

      1.直接命令行执行

          必须拥有shell脚本文件的可读和可执行权限(rx)

          路径要正确:a.绝对路径    /home/dmtsai/myscript.sh

                           b.相对路径    ./myscript.sh

                           c.通过变量PATH    将myscript.sh放在PATH指定的目录下

       2.以bash进程执行

          只要拥有shell脚本文件的可读权限(r)

          # bash myscript.sh

          或# sh myscript.sh

    type:查看命令的类型   -t:会显示可能的三种情况:file---外部命令、alias-----命令的别名、builtin-----内置的命令功能

                                    -a:将系统PATH定义的路径中所有含xxx名称的命令都列出来

    echo、unset:变量的显示与设置

    env、export:环境变量的相关操作

    read:变量的输入

    declare/typeset:数组与声明

三、脚本中变量的使用

    1.变量的显示与设置

       使用echo命令显示变量的值:

        # echo $变量名

        # echo ${变量名}

       设置变量:# 变量名=变量值

       取消变量:# unset 变量名

    2.环境变量功能

       env:查看环境变量

       set:查看所有变量:包括环境变量和自定义变量(主要区别:作用域不用)

       环境变量在整个bash运行过程中有效,自定义变量只在当前进程中有效

       export:将自定义变量转化为环境变量

       # export 变量名

    3.从键盘读取变量值

       read:从键盘读取变量值,和用户交互,在shell script中经常使用

       # read [-pt] 变量名   -p:后面接提示语句

                                     -t:后面接等待的秒数

    4.声明变量类型

       使用declare或typeset能声明变量的类型

       # declare [-aixr] 变量名   -i:声明为整型

                                          -x:声明为环境变量

四、数据流重定向和管道

     1.数据流重定向

     标准输入(stdin):代码为0,符号为<或<<

     标准输出(stdout):代码为1,符号为>或>>

     标准错误输出(stderr):代码为2,符号为2>或2>>

     将数据从指定的流输入或输出,就称为数据重定向

     标准输出流stdout默认情况下将数据输出到device

     使用>将数据输出重定向到文件

     >默认为覆盖文件内容,如果要追加则用>>

     2>:已覆盖的方式将错误信息输出到指定文件或设备上

     /dev/null:将错误信息忽略,及输出到黑洞

     <:标准输入流默认从键盘输入

     <<:用于设定结束输入的关键字

     2.管道

     管道命令的界定符号为“|”

     管道命令仅会处理stdout,对stderr会忽略

     管道命令必须要能够接收来自前一个命令的数据作为stdin

     选取命令cut、grep

     cut:将同一行的数据进行分解  -d:后面接分隔字符,与-f一起使用

                                             -c:以字符的单位取出固定字符区间

                                             -f:依据-d将一段信息分隔,-f指定取哪一段

     cut是从一行中取出部分信息,grep是按条件取出某行

     排序命令:sort、wc、uniq

     sort:用于对输入内容进行排序

     uniq:用于取出结果中的重复行

     wc:用于统计字、字符、行   -l:仅列出行

     3.双向重定向

     tee:能将数据流同时输出到文件与屏幕   -a:以追加的方式将内容输出到文件

    printf:文件的格式化输出命令

第五章 shell程序设计II-进阶

一、shell脚本的经典案例

二、结构化控制语句的使用

      if-then语句

      1.if [表达式]; then

                     语句

         fi

      2.if [表达式]; then

                     语句

         else

                     语句

         fi

       3.if [表达式]; then

                      语句

          elif

                      语句

          else

                      语句

          fi

      case。。。esac语句

      1.case $变量名 in

                  “变量值”)

                       语句

                  ;;

                  “变量值”)

                       语句

                  ;;

                   *)

                       语句

                   ;;

        esac

        while循环

        1.while [ 条件表达式 ]

           do

                 语句

           done

        2.until [ 条件表达式 ]

           do

                 语句

           done

         for循环

         1.for 变量名 in value1 value2 value3

            do

                   语句

            done

          2.for ((初始值;终止条件;执行步长))

            do

                    语句

            done

三、函数的使用

      function 函数名()

      {

             程序段

      }

      #调用函数语法为:

      函数名

四、脚本的调试

       sh:支持对脚本的语法检查和调试

        # sh [-nvx] scripts.sh

原文地址:https://www.cnblogs.com/turningli/p/5589447.html