shell脚本和编程

71 阅读2分钟

学习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,其中引用的参数并不是parameter而是parameter的实际的值2.参数长度{!parameter},其中引用的参数并不是parameter而是parameter的实际的值 2.参数长度 {#parameter] 1#!