
Shell 脚本基础知识体系框架一、多个命令的组合执行· 顺序执行使用分号 ; 将多个命令放在同一行依次执行不管前一条是否成功。示例date ; who· 管道传递使用竖线 |将前一个命令的标准输出作为后一个命令的标准输入只显示最终结果。示例date | who此例仅演示管道用法二、创建与执行 Shell 脚本文件创建脚本· 使用文本编辑器如 vim创建 .sh 文件。· 文件第一行必须指定解释器#!/bin/bash#! 告诉系统使用哪个 shell 程序来运行脚本执行脚本的两种方法· 方法一调用 bash 解释器执行无需可执行权限。命令bash test.sh· 方法二使用绝对或相对路径直接执行需先赋予可执行权限。命令/home/zhang/test.sh 或 ./test.sh赋予权限chmod x test.sh三、echo 命令 – 显示文本消息· 输出普通文本自动换行echo “文本内容”· 不换行输出与后续命令输出同行echo -n “文本内容”四、变量环境变量系统预定义· 引用方式$变量名例如HOME、HOME、HOME、PATH· 若要输出美元符加变量名字面量不解析在 $ 前加反斜杠 \例如 $HOME用户自定义变量局部变量· 命名规则由字母、数字、下划线组成长度不超过 20 个字符区分大小写。· 赋值语法变量名值等号两侧不能有空格· 作用域仅在当前脚本内有效退出脚本后命令行无法调用。命令替换将命令输出赋给变量· 方法一反引号 命令例如 current_datedate %y%m%d· 方法二(命令)例如currentdate(命令)例如 current_date(命令)例如currentdate(date %y%m%d)· 常用场景用 date 生成唯一文件名用 wc -l 统计行数。五、数学运算整数运算· 使用 expr 命令格式expr 操作数1 运算符 操作数2注意运算符与数字之间必须有空格特殊字符*、(、)需用反斜杠 \ 转义。支持操作符 - * / %· 使用 $[ 表达式 ] 或((表达式))格式(( 表达式 )) 格式((表达式))格式[ 表达式 ] 或((表达式))优点无需空格无需转义可直接使用变量。示例result(( 表达式 )) 优点无需空格无需转义可直接使用变量。 示例result((表达式))优点无需空格无需转义可直接使用变量。示例result[ 100 * (50 - 45) ]浮点运算使用 bc 计算器· 在命令行直接输入 bc 进入交互模式用 scalen 设置小数位数输入 quit 退出。· 在脚本中使用 bc 的格式variable(echooptions;expression∣bc)多个选项用分号;分开例如variable(echo options; expression | bc) 多个选项用分号 ; 分开例如variable(echooptions;expression∣bc)多个选项用分号;分开例如variable(echo “scale4; 100/3” | bc)· 注意bash 原生数学运算仅支持整数浮点必须用 bc。六、退出脚本与退出状态码· 每个命令执行完毕后都会返回一个 0~255 的整数值作为退出状态码0 通常表示成功。· 使用 $? 获取上一个命令的退出状态码。· 在脚本中使用 exit 命令可以主动指定退出状态码例如exit 5· 脚本默认以最后一个命令的退出状态码作为整个脚本的退出码。七、常用命令及参数速查表date - 显示或设置日期时间常用参数 %y%m%d两位年、月、日who - 查看当前登录用户无常用参数wc - 统计文件行数、词数、字节数常用参数 -l仅统计行数chmod - 修改文件权限常用参数 x添加执行权限echo - 输出文本常用参数 -n不换行expr - 整数运算注意转义和空格bc - 浮点运算常用 scalen 设置小数位数exit - 退出脚本并返回状态码后跟数字0~255八、知识逻辑脉络整体框架创建脚本文件#!/bin/bash 命令序列↓执行脚本bash 或 chmod x 后直接运行↓脚本内部命令├── echo 输出提示信息├── 变量环境变量、自定义变量、命令替换结果├── 数学运算整数用 expr / $[] /(())浮点用bc└──退出状态码(())浮点用 bc └── 退出状态码(())浮点用bc└──退出状态码? 获取exit 指定返回值Xshell实操截图前置准备创建脚本模块1多命令执行分号;、管道|1.1 分号分隔多命令同行执行1.2 管道符传递命令输出模块2创建、执行shell脚本#!/bin/bash、bash执行、./路径执行、chmod赋权2.1 创建基础脚本 test.shvim写入一键生成文件2.2 方式1bash直接运行脚本无需执行权限2.3 方式2直接路径执行先赋可执行权限模块3echo输出、系统环境变量、自定义变量、命令替换 反引号 / $()3.1 环境变量演示脚本 var_test.sh3.2 运行变量脚本模块4wc统计文件行数、词数、字节数模块5数学运算 expr / $[] / $(()) / bc浮点运算5.1 expr整数运算注意空格、*转义5.2 $[] 整数运算脚本 math1.sh5.3 运行整数运算脚本5.4 bc浮点计算脚本内管道调用bc5.5 运行bc浮点脚本模块6退出状态码 $?、exit 指定返回码6.1 退出码脚本 exit_test.sh6.2 执行并查看退出状态码