shell脚本编程基础

shell是解释型的编程语言


解释型脚本文件的执行过程:

    当执行一个解释型的脚本文件是时,脚本文件会被提交到内核。内核看到第一行定格写的“#!”时,就会调用“#!”后面跟的解释器,启动一个解释器进程,并把该文件的后续内

容交给解释器翻译给CPU执行。脚本后续内容执行完毕后,解释进程将会随之结束。


shell脚本书写规范:

       第一行:#!/bin/bash  必须定格书写

               #author: movekj  脚本作者

               #date:  书写日期

               #version:0.0.1  版本号

               #description: bash scription  脚本功能描述


shell脚本编程是一门过程式的编程语言,有以下三种执行流程:

       顺序执行:从文件的第一条语句开始一条一条向后执行

       选择执行:根据给出的条件,选择性的执行

       循环执行: 重复的执行循环体中的语句


       变量:

            本地变量:只对当期进程有效

                  var_Name=value

            环境变量:对当前进程及其自进程有效

                  export var_Name=value

            局部变量:在代码块中有效(通常用于函数中)

                  local var_Name=value

            

            位置变量:$0、$1、$2...$n

            特殊变量:

                  $#:表示脚本参数的个数

                  $?:表示上一条命令的执行状态(0表示执行成功,非零表示执行失败)

                  $*:表示脚本的参数列表

                  $@:表示脚本的参数列表

       变量赋值:

            var_Name=value

            declare [option] var_Name=value

    

       shell脚本中常见的符合及其意义:

            `COMMAND`(反撇号):表示命令引用,引用命令的执行结果

            " "(双引号):弱引用,其中有$加变量名时,会做变量替换

            ‘ ‘(单引号):强引用,其中有$加变量名时,不会做变量替换


       循环语句:(有以下常见的三种)

            for循环:遍历列表,遍历到列表最后一个参数时,退出循环。

                     for var_Name in LIST

                     do

                          循环体

                     done

                     LIST的生成方式:

                          1、seq命令

                             seq [star] [步进] [end]

                          2、{..}

                          3、直接键入参数以一个或多个空格隔开


            while循环:当条件不满足condition时,退出循环。

                     while condition

                     do

                         循环体

                     done

            until循环:当条件满足condition时,退出循环。

                     

                     while condition

                     do

                         循环体

                     done

       选择语句:

            if语句:

                    单分支:

                    if COMMAND

                    then

                         选择分支

                    fi

                    双分支:

                    if COMMAND
                    then

                         选择分支1

                    else

                         选择分支2

                    fi

                    多分支:

                    if COMMAND    

                    then

                         选择分支1

                    elif COMMAND

                    then

                         选择分支2

                    elif COMMAND
                    then

                         选择分支3

                    ...

                    else

                         选择分支n

                    fi

           case语句:

               case var_Name in 

               )

                    ;;

               )

                    ;;

               )

                    ;;

               esac


shell条件测试

        字符比较:

            >、<、>=、<=、==、!=

            -z:测试变量是否为空

            -n:测试变量是否不空

        数字比较:

            -gt、-lt、-ge、-le、-eq、-ne

        文件测试:


算数运算

        运算符合:+、-、*、**(乘方)、/、%(取模/取余)

        let var_Name=EXPR

        let I++ --> let I=$I+1

        let I+=2 --> let I=$I+2

        let I-=2 --> let I=$I-2

        其它符合以此类推

        

        expr AGR1 + AGR2 ...

        $[EXPR]

        $((EXPR))

        expr AGR1 + AGR2 ...



                    







本文出自 “木屋科技” 博客,请务必保留此出处http://starli.blog.51cto.com/8813574/1658097

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。