学习shell的价值
1.Linux服务器的基本操作和管理
2.前端Node.js服务的进程管理·问题排查·资源监控等运维操作
3.使用shell编写TCE·SCM·Docker脚本,完成服务编译和部署
课程准备:
1.一台安装了linux系统的物理机或云主机,可运行shell脚本
2.本地的vscode安装Bash Debug插件,并升级到4.x以上
3.Npm全局安装zx依赖
一 shell基础概念
1.概念
2.发展
3.构成
二 语法和命令
三种类型;自定义变量,环境变量,系统环境变量
作用域;当前shell,当前shell及其子shell,所有shell
声明方式;=,export·declare-x,启动加载
规范;字符串,整形,浮点型,日期型
自定义变量
-
#变量名等于变量值(符号左右不能有空格)
-
#将命令复制给变量
-
#将命令结果赋值给变量
-
#默认字符串,不会进行 + 运算
-
#声明变量为模型
-
#导出环境变量
系统环境变量
变量名 含义 常规操作
$0 当前shell名称 $1,$2等可以获得到传入参数
$# 传入脚本的参数数量 if[$#-gt 1]
$* 传入脚本的所有参数
$? 上条命令执行的状态码 if【$?-eq 0】;
$PS1 命令提示符 export PS1=“\u@\h\w>”
$HOME 用户主文件夹 cd~
$PATH 全局命令的搜索路径 PATH=$PATH:[新增路径]
运算符和引用
管道
管道与管道符|,作用是将前一个命令的结果传递给后面的命令
语法:cmd1|cmd2
要求:管道右侧的命令必须能接受标准输入才可以,比如grep命令,IS,mv等不能直接使用,可以使用xargs预处理
注意:管道命令仅仅处理stdout,对于stder会予以忽略,可以使用set-o pipefail设置shell遇到管道错误退出
判断命令
分支语句
循环
函数
注意事项
-
shell自上面下执行,函数必须在使用前定义
-
函数获取变量和shell script类似,1,$2...获取
-
函数内return仅仅表示函数执行状态,不代表函数执行结果
-
返回结果一般使用echo,printf,在外面使用$(),"获取结果
-
如果没有return,函数状态是上一条命令的执行状态,存储在$?中
常用命令
三 执行过程和原理
1.shell脚本一般以sh结尾,也可以没有,这是一个约定;第一行需要指定用什么命令解释执行
1 #!/bin/bash
1 #!/usr/bin/env bash
2.启动方式