bash变量和逻辑运行

(一)bash特性及bash脚本编程初步

  • 如果相与计算机进行交互,必须有一个终端,以及附着在终端上的接口程序
    • GUI:KDE,GNome,Xfce
    • CLI:/etc/shells
  • bash特性
    • 命令行展:~,{}
    • 命令别名:alias,unalias
    • 命令历史:history
    • 文件名通配:glob
    • 快捷键:ctrl+a,e,u,k,l
    • 命令补全:$PATH
    • 路径补全
    • 命令hash:
      • 缓存此前命令的查找结果:key-value格式
      • hash命令
        • 直接单独使用,查看缓存的之前的命令
        • hash -d COMMAND:删除缓存的某个命令
        • hash -r:清空缓存
    • 变量:
      • 程序=指令+数据
        • 指令:由程序文件提供
        • 数据:IO设备,文件,管道,变量,等等
      • 程序=算法+数据结构
      • 变量名+指向的内存空间
      • 变量赋值:name=value
      • 变量的数据类型:存储格式,数据范围,参与的运算
        • 字符类型
        • 值类型
          • 精确数值类型
          • 非精确数值类型
      • bash使用弱类型编程语言,
        • 把所有变量统统视为字符类型,
        • 当做加减运算的时候,自动转化为数值类型
        • 不支持浮点类型,除非借助于第三方工具
        • 变量无需事先声明
      • bash中的变量引用:${Var_Name},花括号可以省略,$Var_Name。有一种情况不能省略花括号,就是字符串组合,比如${animal}s
      • 变量名:只能包含数字,字母,下划线,不能以数字开头,不能使用保留字
      • bash变量类型:
        • 根据作用范围
          • 本地变量:当前shell进程,子进程无效
            • 变量赋值:name=value
            • 变量引用:${Var_Name},花括号可以省略,$Var_Name
              • 双引号是弱引用,变量名会替换为其值
              • 单引号是强引用,变量不会替换为其值
            • 查看变量:set
            • 撤销变量:unset NAME
          • 环境变量:当前shell进程及其子进程
            • 变量赋值:
              • 方法一:export name=value,或者分开写,name = value 再export name
              • 方法二:declare -x name=value,或者分开写,name=value,再declare -x name
            • 变量引用:与本地变量一样。
              • bash内嵌了许多环境变量(通常为全大写字符),用于定义bash的工作环境,例如:PATH,HISTFILE,HISTSIZE,HISTFILESIZE,HISTCONTROL,SHELL,HOME,UID,PWD,OLDPWD
            • 查看变量:
              • export
              • declare -x
              • printenv
              • env
            • 撤销变量:unset NAME
          • 局部变量:当前shell进程中的某一个代码片段
        • 只读变量:
          • declare -r NAME表示把一个变量变成只读格式
          • 或者readonly NAME
          • 只读变量无法重新赋值,并且无法撤销,除非shell进程终止
        • 位置参数变量:向执行脚本的shell进程传递的参数
        • 特殊变量:shell内置的有特殊功用的变量
          • $?:上一个命令的执行状态结果,0表示成功,1-255表示各种失败
    • 多命令执行
      • 同一行中用分号分隔:COMMAND1;COMMAND2;COMMAND3;...
  • 逻辑运算
    • 真:true,yes,on,1
    • 假:false,no,off,0
    • 与,或,非,异或
    • 短路机制:如果前一个命令已经可以判断结果了,后面的命令就不执行了。
      • id $UserName || useradd $UserName
原文地址:https://www.cnblogs.com/jacky1982/p/7630364.html