一、前言本次小学期课程围绕基础Shell脚本展开系统学习课程覆盖多条命令联合执行、脚本创建运行、echo输出、变量定义与命令替换、文件行数统计、整数/浮点数学运算、脚本退出状态码等核心知识点。本文结合Xshell实操过程梳理完整知识框架记录每块内容的原理、使用场景与易错点整理全部实操现象与踩坑经验。二、多条命令组合执行方式Shell支持一次性执行多条命令分为分号分隔与管道符两种用法二者输出逻辑存在明显区别。分号;分隔命令同一行写入多条指令系统会从前到后依次完整执行每一条命令每条命令都会独立输出自身运行结果互不干扰。适合需要连续查看多条指令全部输出内容的场景。管道符|传递输出将前一条命令的输出结果直接作为后一条命令的输入数据最终仅展示最后一条命令的输出中间命令不会打印内容。常用来做数据过滤、二次处理。三、Shell脚本创建、权限与运行方法脚本文件规范使用vim编辑器创建后缀为.sh的文本文件文件首行必须填写#!/bin/bash用于告知系统当前脚本使用bash解释器运行#单独使用代表单行注释仅作文字说明不会执行。两种运行脚本方式第一种直接调用bash命令执行脚本文件该方式不需要给脚本添加可执行权限操作简单适合临时调试。第二种通过文件相对路径./xxx.sh或绝对路径执行该方式必须手动赋予文件可执行权限否则会弹出Permission denied权限拒绝报错。赋予执行权限使用chmod ux 文件名修改权限后文件属性会新增x可执行标识。echo输出控制工具echo是脚本内自定义输出文本的核心命令默认输出文字后自动换行搭配-n参数可以取消末尾换行让自定义文字和后续命令输出显示在同一行优化输出排版可读性。四、Shell变量体系详解变量用于临时存储数据分为系统环境变量、自定义局部变量、命令替换变量三类。系统环境变量Linux系统自带内置变量如USER、UID、HOME调用时在变量名前加符号如果想要原样打印符号需要在$前添加反斜线\进行转义。用户自定义局部变量命名支持字母、数字、下划线长度不超过20字符区分大小写赋值格式为变量名数值/字符串等号左右两侧绝对不能存在空格。该变量仅在当前脚本运行期间生效脚本执行结束后自动销毁无法在外部终端直接调用。命令替换赋值变量可以把命令执行结果存入变量方便后续重复调用有两种语法反引号命令和 $(命令)后者可读性更高推荐日常使用。典型场景为获取当前日期拼接生成自定义日志文件名实现日志文件按日期区分。wc文件统计命令wc用于统计文本内容默认输出文件行数、单词数量、字节总数搭配-l参数仅单独输出文件行数使用通配符*可以一次性统计当前目录下全部文件的行数信息。五、Shell数学运算整数浮点原生bash仅支持整数运算小数浮点运算需要借助bc计算器工具三种运算方式各有优劣。expr命令运算运算符和数字之间必须保留空格*、括号等特殊符号需要添加反斜线转义语法繁琐使用较少。$[] 与 $(())内置运算无需转义符号、不用严格空格支持直接嵌入变量计算专门处理整数运算简洁高效是脚本整数计算首选。bc浮点计算器交互模式终端直接输入bc进入计算界面默认仅输出整数结果设置scale数字可以指定保留小数位数输入quit退出计算器exit无法正常关闭。脚本内调用bc借助管道符将计算公式传入bc格式为变量$(echo “精度设置;计算公式” | bc)注意精度scale语句必须写在运算表达式前方调换顺序会导致小数设置失效。六、脚本退出与退出状态码内置变量$?专门存储上一条执行完毕命令的退出状态码用来判断命令是否运行成功。通用状态码含义0代表命令正常执行无错误1是未知通用错误2代表命令格式错误126文件无执行权限127找不到输入的命令130代表使用CtrlC强制终止程序255为超出合法范围的异常退出码。exit自定义退出码脚本末尾使用exit数字能够手动指定脚本结束时返回的状态码默认情况下脚本会以最后一行命令的状态码退出。七、整体知识框架总结脚本基础.sh文件创建、#!/bin/bash声明、两种运行方式、文件执行权限管理、echo自定义输出命令组合分号连续执行、管道符数据传递变量体系系统环境变量、自定义局部变量、命令替换赋值、wc文件统计数值计算expr老式整数运算、[]/(())简易整数运算、bc浮点小数运算程序退出$?读取状态码、exit自定义退出码、各类标准退出码含义。