18.shell脚本基础-bash变量和逻辑运行

bash特性及shell脚本编程初步

  终端:附着在终端的接口程序:

    GUI:KDE,GNOME,Xfce

    CLI:/etc/shells

  bash的特性:

    命令行展开:~,{}

    命令别名:alias,unalias

    命令历史:history

    文件名通配:glob

    快捷键:Ctrl+a,e,u,k,l

    命令补全:$PATH

    路径补全:

  bash特性之:命令hash

    缓存此前的命令查找结果:key-value

    key:搜索键

    value:值

 

     

 只有外部命令才有,hash和type都是内部命令,type hash/help hash

                                                                                                                                                                                                                                                                                                                                                                                                                            

    bash特性之:变量

     程序:指令+数据

       指令:由程序文件提供

       数据:IO设备、文件、管道、变量

     程序:算法+数据结构

     变量名+指向的内存空间

     变量赋值:name=value

     变量类型:存储格式、表示数据范围、参与的运算

       编程语言:强类型变量

            弱类型变量

               bash把所有变量统统视作字符型

               bash中的变量无需事先申明:相当于,把申明和赋值过程同时实现

     变量替换:把变量名出现的位置替换为其所指向的内存空间中的数据

     变量引用:$(var_name),$var_name

     

 

     父子shell

     变量名:变量名只能包含数字、字母、下划线,而且不能以数字开头:

        变量名:见名知义,命名机制遵循某种法则;不能够使用程序的保留字;if、else、then、while等等;

     bash变量类型:

        本地变量:作用域仅为当前shell进程;

        环境变量:作用域为当前shell进程及其子进程;

        局部变量:作用域仅为某代码片段(函数上下文);

        位置参数变量:当执行脚本的shell进程传递的参数;

        特殊变量:shell内置的有特殊功用的变量;

          $?:

            0:成功

            1-255:失败

        本地变量:

          变量赋值:name=value

          变量引用:$(name),$name

            "":变量名会替换为其值;

            ‘’:变量名不会替换为其值;

          查看变量:set

          撤销变量:unset name

            注意:此处非变量引用;

        环境变量:

          变量赋值:

            (1) export name=value

            (2) name=value

              export name

            (3) declare -x name=value

            (4) name=value

              declare -x name

          变量引用:$(name),$name

          注意:bash内嵌了许多环境变量(通常为全大写字符),用于定义bash的工作环境

            PATH,HISTFILE,HISTSIZE,HISTFILESIZE,HISTCONTROL,SHELL,HOME,UID,PWD,OLDPWD

          查看环境变量:export,declare -x,printenv,env

        只读变量:

             (1)declare - r name

           (2)readonly name

           只读变量无法重新赋值,并且不支持撤销:存活时间为当前shell进程的生命周期,随shell进程终止而终止

 

    bash特性命令之命令执行:

     ~]#COMMAND1;COMMAND2;COMMAND3;...

     逻辑运算:

       运算数:真(true,yes,on,1)

           假(false,no,off,0)

       与:

         1&&1=1

         1&&0=0

         0&&1=0

         0&&0=0

       或:

         1 || 1=1

         1 || 0=1

         0 || 1=1

         0 || 0=0

       非:

          !1=0

          !0=1

      短路法则:

        ~]# COMMAND1 && COMMAND2

          COMMAND1为“假”,则COMMAND2不会再执行;

          否则,COMMAND1为“真”,则COMMAND2必须执行;

    

        ~]# COMMAND1 || COMMAND2

          COMMAND1为“真”,则COMMAND2不会再执行;

          否则,COMMAND1为“假”,则COMMAND2必须执行;

        示例:~]# id $username || useradd $username

  

    

      

   

 

 

      

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

 

posted @ 2020-04-07 14:20  白驼山庄庄主  阅读(150)  评论(0编辑  收藏  举报