Shell脚本和编程 | 青训营笔记

78 阅读2分钟

Shell是一种命令行界面,也是一种编程语言,熟练掌握Shell能够大大提升Unix/Linux环境下的工作效率。

基本概念

终端:获取用户输入、展示运算结果的硬件设备
tty(teleypeWriter):和终端等价,早期指电传印记,在Linux中是输入/输出环境
终端模拟器:关联虚拟tty的输入输出软件
Shell:命令行解释器(command interpreter),处理来自终端模拟器的输入,解释执行之后输出结果
Bash:shell的一种具体实现(shell和bash类似类和实例的关系)

构成

无标题.png

语法和命令

  • 变量

    • 自定义变量:作用域为当前shell,声明方式为=,类型为为字符串(默认)、整型、浮点型、日期型
    • 环境变量:作用域为当前shell 及其子shell,使用export、declare -x声明
    • 系统环境变量:作用域为所有shell,在Shell启动时加载
  • 自定义变量

    • 变量名=变量值(等号左右不能有空格)
      num=1

    • 将命令复制给变量
      _ls=ls

    • 将命令结果赋值给变量 file_ list=$(ls -a)

    • 默认字符串,不会进行+运算(数值计算不能直接+)
      total=page_ size*page_ num

    • 声明变量为整型
      let total=page_ sizepage_ num
      declare -i total=page_size
      page_num

    • 导出环境变量
      export total declare -X total

      (-、+指的是取消或者赋予变量属性)

      image.png
  • 系统环境变量
    image.png

  • 运算符和引用
    image.png

  • 管道

    • 管道与管道符|,作用是将前一个命令的结果传递给后面的命令
    • 语法:cmd1| cmd2
    • 要求:管道右侧的命令必须能接受标准输入才行,比如grep命令,Is、mv等不能直接使用,可以使用xargs预处理
    • 注意: 6管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail 设置shell遇到管道错误退出
  • 重定向
    输出重定向符号
    >:覆盖写文件
    >>: 追加写入文件
    2>:错误输出写入文件
    &>:正确和错误输出统一写入到文件中.

    输入重定向符号
    <
    <<