学习shell的价值:
1.Linux服务器的基本操作和管理 2.前端Node.js服务的进程管理、问题排查、资源监控等运维操作 3.使用shell编写TCE、SCM、Docker脚本,完成服务编译和部署
shell的发展
1.贝尔实验室在1971年为Linux的老爸unix开发了第一个shell,称为V6shell 2.Stephen Bourne在贝尔实验室为V7UNIX所开发的 Bourne shell,即sh 3.开源组织GNU为了取代B 提取文字 隐藏墨迹 Bourne-Againshell,即Bash
shell的构成
分为解释器和编程语言
解释器分为
bash内置命令 [echo letread等 GNU核心工具集 Ismvcat等 第三方库 node、python等封装的模块
编程语言分为
变量:指定义变量 环境变量 系统环境变量 运算:逻辑运算符 算数运算符 语句:判断 分支 循环 函数
自定义变量demo #!/bin/bash
变量名=变量值(等号左右不能有空格)
page_size=1 page num=2
将命令复制给变量
1s=1s 10
将命令结果赋值给变量
file_list=s(ls -a)
声明变量为整形
let total -i total=page_size_num
导出环境变量
export total declare -x total
shell中的管道
定义:cmd1|cmd2 输入要求:比如管道右侧的命令必须能接受标准输入才行,比如grep命令,ls、mv等不能直接使用,可以使用xargs预处理 注意:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set-opipefail设置shell,遇到管道错误退出
shell的命令机制
字符解析 shell展开 查找命令、执行 字符串匹配机制:正则表达式 demo grep 通配符:demo ls
shell的循环:
while [condition];do;done until [condition];do;done for in[list];do;done
shell的执行方式
子进程执行:直接命令执行:chmoda+rx./test.sh;./test.sh bash bash./test.sh source source./test.父进程执行: source source ./test.sh . 和source相同
shell展开
参数展开(ShellParameterExpansion) 1.间接参数扩展 {#parameter] 1#!