Shell笔记 | 青训营笔记

73 阅读2分钟

Shell 脚本编程

shell是一个解释器,同时也是一种编程语言

##命令和语法

###变量 自定义:当前shell 声明:=(等号两边不能有空格)规范:字符串、整型、浮点型、日期型 环境变量:当前&子shell 声明:export、declare -x 系统环境变量:所有shell

###自定义变量 可以把命令或者命令结果赋值给变量 _ls=ls file_list=$(ls -a)

要用let或declare声明赋值运算(!)的变量 declare:-设定 +取消 -a数组 -i整数 -x环境变量 -r只读变量 -p显示指定变量的被声明的类型

###环境变量 012当前shell/脚本名称012 当前shell/脚本名称 # 传入脚本的参数数量 传入脚本的所有参数* 传入脚本的所有参数 ? 上条命令执行的状态码 PS1命令提示符(也就是shell界面每一行固定的提示符号)PS1 命令提示符(也就是shell界面每一行固定的提示符号) HOME 用户主文件夹 $PATH 全局命令的搜索路径

###运算符和引用 -注意 算数运算符 逻辑运算符 比较运算符 引号 圆括号 命令链接 后台运行 &

###管道与管道符 语法:cmd1|cmd2 要求:管道右侧必须能够接收 xargs命令:将标准输出转化为参数列表

###重定向 输入重定向< << 输出重定向> >> 2> &>

###判断命令 test [ [[ 三种符号 用于整数测试、字符串测试和文件测试(-e存在 -f存在并且为普通文件) test condition [ condition ] [[ condition ]] (注意空格

###分支语句 语法1: if condition ; then …… elif condition ; then …… else …… fi

语法2: case

###循环 while until for

###函数 语法一: funcName(){ echo "abc";} fuction funcName() {echo "abd";} 自上而下 返回结果用echo printf获取

###模块化

###常用命令 grep 例如 grep "ERROR" cloud.log -A3 -B3 查看cloud日志里包含“ERROR”字段的搜寻结果的前三行和后三行

tail head 查看文件的前n行或后n行 例如 tail -n 10 cloud.log

-f标志位 读取到末尾之后不会停止执行,会等待文件的输入

##执行过程和原理 ###shell脚本 shell脚本一般以sh结尾 启动方式 解释器运行bash source运行

###执行过程 字符解析 shell展开 重定向 执行命令 收集状态并返回

###shell展开 大括号展开 波浪号展开(展开目录) 参数展开 ${} 数学计算 文件名展开(用正则表达式对特殊文件名进行查找)

##调试和前端集成 ###调试

  1. 普通log,使用echo,printf
  2. 使用set命令
  3. vscode debug插件

###前端集成

  1. node中通过exec、spawn调用shell命令
  2. shell脚本中调用node命令
  3. 借助zx等库进行JavaScript、shell script的融合

个人思考:Shell编程课程和之前Linux课程有衔接,Linux的笔记还需要整理一下,希望以后有更多机会能够实操这些运维和测试的技巧吧,加油!(and这个记笔记软件真的不好用!)