今天总结下Shell 脚本和编程这部分的相关笔记。Shell脚本和编程是Linux操作系统中必不可少的一部分,使用Shell脚本可以提高工作效率,自动化完成各种任务。
将会学习到
- Linux服务器的基本操作和管理;
- 前端Node.js服务的进程管理、问题排查、资源监控等运维操作;
- 使用shell编写TCE、SCM、Docker脚本,完成服务编译和部署。
Shell基础概念
- shell是操作系统的最外层,是一个用户跟操作系统之间交互的命令解释器;
- 大多数linux默认的shell命令解释器是 bash(/bin/bash);
- shell独立于内核,是链接内核和应用程序的桥梁,通俗来讲shell是内核周围的外壳。
Shell脚本中的命令是Linux系统上的命令,例如ls、cd、grep等。Shell脚本中的语法与其他编程语言类似,包括变量、循环、条件语句等。
Shell脚本中的变量可以存储数据,例如字符串、数字等。变量可以通过赋值运算符“=”,将数据存储到变量中。
循环语句可以用来重复执行一段代码,例如for循环、while循环等。条件语句可以用来根据条件执行不同的代码,例如if语句、case语句等。
编程语言:
变量:自定义变量、环境变量、系统环境变量
运算:逻辑运算符、算数运算符
语句:判断、分支、循环
执行过程和原理
shell脚本一般以.sh结尾;
启动方式:
-
文件名运行
./filename.sh
-
解释器运行
bash ./filename.sh
-
source运行
source ./filename.sh
第一行需要指定用什么命令解释器来执行
管道
管道与管道符|,作用是将前一个命令的结果传递给后面的命令。
语法:cmd1|cmd2
要求:管道右侧的命令必须能接受标准输入才行,比如grep命令,ls、mv等不能直接使用,可以使用xargs预处理。
注意:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遇到管道错误退出。
插件
- shellman:代码提示和自动补全;
- shellcheck:代码语法校验;
- shell-format:代码格式化;
- Bash Debug:支持单步调试。
前端集成
- node中通过exex ,spawn 调用shell命令;
- shell脚本中调用node命令;
- 借助zx等库进行javascript,shell script的融合。