Shell 编程语言之变量和运算符 | 青训营笔记

122 阅读1分钟

Shell 作为一门编程语言,具有一系列的语法规则。 本文介绍了其中的变量运算符中基础的内容。

变量

Shell 中有三种类型的变量:

  • 自定义变量
  • 环境变量
  • 系统环境变量

它们的区别主要是作用域不同:

  • 自定义变量 -> 作用域为当前 shell
  • 环境变量 -> 作用域为当前 shell 及其子 shell
  • 系统环境变量 -> 作用域为所有 shell

详细介绍这三类变量

1、自定义变量

  • 声明与赋值:使用 =(等号左右不能有空格)
    • 指定某个类型:
      • 指定变量为整型:
        1. let total=page_size
        2. declare -i total=page_size
  • 自定义变量的类型:
    • 字符串类型(默认)
    • 整型
    • 浮点型
    • 日期型

2、环境变量

  • 声明(导出):
    1. export total
    2. declare -x total

3、系统环境变量

  • 声明方式:启动加载,也就是一开始就存在了
  • 系统环境变量以$开头:
    • $0$1$2……$*$0是当前 shell 名称/脚本名称,$1$2等可以获取到传入参数,$*获取传入脚本的所有参数
    • $#:获取传入脚本的参数数量
    • $?:获取上一条命令执行的状态码
    • $HOME:获取用户主文件夹路径
    • $USER:获取用户名
    • $PS1:获取命令提示符的内容
    • $PATH:获取全局命令的搜索路径

声明变量的一种命令:declare

  • declare 命令的选项:
    • -:给变量设定类型属性
      • -a:将变量声明为数组类型
      • -i:将变量声明为整数型
      • -x:将变量声明为环境变量
    • +:取消变量的类型属性

运算符

  • shell 中有许多种类的运算符,包括比较常见的算数运算符、逻辑运算符、比较运算符,和比较特殊的圆括号、命令连接等

1、圆括号

  • (()):表示这是一个算数运算
    • 比如:foo=$((1+2))
  • ():执行命令
    • 比如:$(ls -a)

2、命令连接

  • cmd1 || cmd2:cmd1 执行完且返回码非0(表示失败),则继续执行 cmd2
  • cmd1 && cmd2:cmd1 执行完且返回码为0(表示成功),则继续执行 cmd2
  • cmd1 ; cmd2:cmd1、cmd2 串行执行
  • cmd1 & cmd2:cmd1、cmd2 并行执行