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

106 阅读4分钟

一:为什么要学习shell

Shell脚本是一种编程语言,用于编写命令行环境下的脚本程序。它可以用于执行一系列操作、自动化任务、批量处理文件等等。Shell脚本是Linux和UNIX系统管理员的常用工具之一,也是软件开发人员的必备技能之一.

学习shell有什么价值

  1. 学习shell的同时也会学习到Linux服务器的基本操作和管理,这个技能对于软件开发人员是必备的.
  2. 在学习shell的同时,也能接触和学习前端Node.js服务的进程管理、问题排查、资源监控等运维操作
  3. 学习shell以后可以使用 shell编写TCE、SCM、Docker脚本,完成服务编译和部署

总之: 学习Shell脚本编程可以帮助你更好地管理和操作系统,提高工作效率,同时也是学习编程的一个良好起点。对于软件开发人员来说也可以说是必须学习.

二: 语法和命令

变量类型

在shell中,有三种类型的变量:自定义变量、环境变量和系统环境变量。它们的作用和范围略有不同。

在shell中,可以使用“source”命令来在当前shell环境下执行一个脚本文件。这样,所有在脚本文件中定义的环境变量和自定义变量都会在当前shell环境中生效。如果直接运行脚本文件,会在一个新的子shell环境中执行,变量的作用域将不同。

类型作用域声明方式规范
自定义变量当前shell=字符串,整型,浮点数,日期类型
环境变量当前shell及其子shellexport, decalre -x
系统环境变量所有shell启动加载

父进程和子进程:每次启动一个新的shell时,都会创建一个新的子shell进程。这个子shell进程可以访问父shell进程中的环境变量和自定义变量,但是它不能修改父shell中的变量。当子shell进程退出时,父shell进程会继续运行。

image-20230510183615834.png

  • 自定义变量:在shell脚本中,可以自定义变量来存储数据。自定义变量只在当前shell进程中可用。可以通过“=”符号赋值,例如:
 makefileCopy code
 message="Hello, World!"
  • 环境变量:环境变量是一种全局变量,可供所有的shell进程使用。在shell中,使用“export”命令将一个自定义变量升级为环境变量,例如:
 arduinoCopy code
 export message="Hello, World!"
  • 系统环境变量:系统环境变量是由操作系统设置的环境变量。这些变量通常包含有关系统配置和路径的信息,例如:
 javascriptCopy code
 PATH=/usr/local/bin:/usr/bin:/bin
  • declare[+/-] 选项 变量
选项含义
-给变量设定类型属性
+取消变量的类型属性
-a将变量声明为数组类型
-i将变量声明为整数型
-x将变量声明为环境变量
-r将变量声明为只读变量
-p显示指定变量的被声明的类型
 #! / bin/ bash
 ​
 #变量名=变量值(等号左右不能有空格)
 page_size=1
 page_num=2
 ​
 #将命令复制给变量
 _1s=ls
 ​
 # 将命令结果赋值给变量
 file_list=$ ( ls -a)12
 #默认字符串,不会进行+运算
 total=page_size*page_num15
 #声明变量为整型
 let total=page_size*page_num18
 ​
 declare -i total=page_size*page_num20
 ​
 #导出环境变量
 export total
 ​
 declare -x total

运算符

  1. 算术运算符:可以用于对整数和浮点数执行算术运算,例如加法、减法、乘法和除法。常见的算术运算符包括加号(+)、减号(-)、乘号(*)、除号(/)和求余数(%)。
  2. 关系运算符:可以用于比较两个值是否相等或大小关系。常见的关系运算符包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。
  3. 逻辑运算符:可以用于组合和比较多个条件语句。常见的逻辑运算符包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。
  4. 字符串运算符:可以用于比较和操作字符串。常见的字符串运算符包括字符串相等(=)和字符串不相等(!=)。
  5. 文件测试运算符:可以用于测试文件的各种属性,如是否存在、是否可读、是否可写等。常见的文件测试运算符包括文件存在(-e)、文件可读(-r)、文件可写(-w)和文件可执行(-x)。