【无标题】【CSDN 完整原创文章:Linux Shell 脚本全流程实战】
前言本次实训基于 Xshell 远程连接 VMware Ubuntu 虚拟机收录本次所有截图对应的全部命令、完整脚本、运行输出、报错信息、原理解析覆盖脚本创建、权限管理、脚本执行、echo 输出、变量使用、日志生成、整数 / 浮点运算、退出状态码全知识点无内容遗漏可直接作为 Linux 课程实训报告配套技术文章。一、基础前置核心知识点1. Shell 脚本基础规范脚本后缀统一为.sh文件首行必须写释伴行#!/bin/bash指定 bash 解释器创建脚本工具vim 脚本名.sh两种脚本执行模式模式 1bash 脚本名.sh无需文件执行权限直接调用 bash 解释器读取运行模式 2./脚本名.sh文件必须拥有x可执行权限否则抛出Permission denied权限操作命令chmod ux 脚本名.sh给文件所有者添加执行权限ls -l 脚本名.sh查看文件权限权限位x代表可执行标记bash 执行语法参考bash --help标准格式bash [参数] script-file ...。2. echo 输出命令用法echo 内容$变量双引号自动解析$变量输出变量真实值echo -n 内容-n参数取消输出末尾自动换行echo \$变量反斜杠\转义$原样输出$变量字符串不解析变量。3. Shell 变量分类与规则1系统内置环境变量无需定义直接调用$USER当前登录用户名$UID用户数字 ID$HOME用户家目录绝对路径2自定义变量赋值格式变量名值等号两侧禁止空格调用格式$变量名多个变量连续书写自动拼接内容。3转义符\\$屏蔽变量解析原样打印$符号。二、实操案例 1查看 bash 执行语法bash --help 截图1. 执行命令bash --help2. 截图关键输出plaintextGNU bash, version 5.2.21(1)-release-(x86_64-pc-linux-gnu) Usage: bash [GNU long option] [option] bash [GNU long option] [option] script-file ...3. 知识点解读bash script-file是无权限运行脚本的标准语法对应实操中bash test.sh执行方式。三、实操案例 2基础日期日志脚本 test.sh创建、bash 无权限运行1. 创建脚本文件命令vim test.sh2. test.sh 完整源码#!/bin/bash #This script displays the date and whos logged on echo -n The time and date are: date echo Lets see whos logged into the system: who3. 无权限执行方式bash test.sh执行命令bash test.sh运行输出结果plaintextThe time and date are:Thu Jul 9 10:39:27 AM CST 2026 Lets see whos logged into the system: jiayang7 pts/0 2026-07-09 10:12 (192.168.237.1) jiayang7 seat0 2026-07-09 10:13 (login screen) jiayang7 tty2 2026-07-09 10:13 (tty2)4. 原理说明直接调用 bash 程序读取脚本不依赖文件自身执行权限适合脚本调试。四、实操案例 3./test.sh 权限报错 chmod 赋执行权限完整流程步骤 1直接./test.sh执行权限不足报错执行命令./test.sh报错信息plaintext-bash: ./test.sh: Permission denied查看原始文件权限ls -l test.sh输出-rw-rw-r-- 1 jiayang7 jiayang7 72 Jul 9 10:38 test.sh权限位无x缺少执行权限。步骤 2赋予所有者可执行权限chmod ux ./test.sh步骤 3验证权限修改结果ls -l test.sh输出-rwxrw-r-- 1 jiayang7 jiayang7 72 Jul 9 10:38 test.sh权限位出现x标记代表可执行权限生效。步骤 4权限生效后 ./test.sh 正常运行执行命令./test.sh运行输出plaintextThe time and date are:Thu Jul 9 10:44:32 AM CST 2026 Lets see whos logged into the system: jiayang7 pts/0 2026-07-09 10:12 (192.168.237.1) jiayang7 seat0 2026-07-09 10:13 (login screen) jiayang7 tty2 2026-07-09 10:13 (tty2)五、实操案例 4系统内置环境变量 \(USER/\)UID/$HOME 演示1. 变量脚本源码#!/bin/bash #This script displays variable echo User info for userid: $USER echo UID:$UID echo HOME:$HOME echo HOME:\$HOME2. 执行命令./test.sh3. 输出结果plaintextUser info for userid: jiayang7 UID:1000 HOME:/home/jiayang7 HOME:$HOME4. 核心知识点$USER/$UID/$HOME系统自带环境变量自动读取当前用户信息$HOME直接解析输出家目录路径\$HOME转义后原样打印$HOME字符串。六、实操案例 5自定义变量、变量拼接演示1. 自定义变量脚本源码#!/bin/bash #Users define variables name1jiayang name2ywq day11 day22 echo $name1 checked in $day1 day ago echo $name2 checked in $day2 days ago echo $name1 checked in $day1$day2 days ago2. 运行输出plaintextjiayang checked in 1 day ago ywq checked in 2 days ago jiayang checked in 12 days ago3. 知识点自定义变量赋值变量值等号无空格连续书写$day1$day2自动拼接为12。4.获得当前日期并用它生成唯一文件名七、实操案例 6exit 自定义退出状态码1. exit_test.sh 完整脚本#!/bin/bash var5 echo The answer is $var exit $var2. 执行命令vim exit_test.sh bash exit_test.sh # 查看脚本退出状态码 echo $?3. 运行输出plaintextThe answer is 5 # echo $? 输出54. 原理exit 数字自定义脚本退出码执行echo $?读取上一条程序返回状态用于流程判断。八、实操案例 7wc 文件行数统计工具全部执行命令# 完整统计行数、单词数、字符数 wc test.sh # 仅统计文件行数 wc -l test.sh # 错误写法参数与通配符无空格报无效参数 wc -l* # 正确写法空格分隔 wc -l *报错解析wc: invalid option -- *-l*连写导致*被识别为命令参数必须空格分隔wc -l *。九、实操案例 8四种 Shell 数学运算完整实操9.1 expr 整数运算运算符必须空格* 需转义 *# 错误无空格 expr 15 # 正确运算符两侧空格 expr 1 5 # 错误*未转义识别为文件通配符 expr 5 * 2 # 正确乘号转义 expr 5 \* 29.2 $[] / $(()) 整数复合运算脚本 operation_test.sh#!/bin/bash #This script shows basic mathematical operations result1$[100*(50-45)] echo The result of the square bracket operation is : $result1 result2$((100*(50-45))) echo The result of double bracket operation is : $result2 result3$[100/52] echo The result of the second test is : $result3执行 输出bash operation_test.sh The result of the square bracket operation is : 500 The result of double bracket operation is : 500 The result of the second test is : 1说明$[]与$(())功能完全一致仅支持整数除法自动向下取整。9.3 bc 浮点小数运算scale 控制保留小数位数交互式 bc 命令bc # 默认整数除法 100/52 # 设置保留4位小数 scale4 100/52 exit输出plaintext1 scale4 1.9230脚本管道调用 bcbc_test.sh#!/bin/bash #This script shows bc operations var1$(echo scale5; 3.44/5 | bc) echo This answer is $var1 # 先运算后设置scale不生效 var2$(echo 3.44/5; scale5 | bc) echo This exchange answer is $var2 # 自定义变量代入浮点运算 num77 var3$(echo scale3;$num/$var1 | bc) echo This answer is $var3关键规则scaleN必须写在除法运算前小数位数才会生效。十、全文实训综合总结作业答题专用1. 创建 运行 sh 脚本完整流程创建脚本vim xxx.sh首行添加#!/bin/bash解释器声明无权限调试运行bash xxx.sh标准执行完整流程① 赋予执行权限chmod ux xxx.sh② 执行脚本./xxx.sh③ 权限校验ls -l xxx.sh确认权限位存在x标记权限报错Permission denied解决执行chmod ux 脚本名.sh添加执行权限。2. echo 输出三大用法echo 文本$变量解析变量输出真实值echo -n 文本输出不自动换行echo \$变量反斜杠转义原样打印$符号。3. $ 变量使用规则系统内置变量$USER、$UID、$HOME直接调用自定义变量变量名值等号两侧无空格调用$变量名多变量连续书写自动拼接内容\$屏蔽变量解析打印原始$字符串。4. 四种数学运算对比表表格运算方式是否支持小数使用限制expr仅整数运算符前后必须空格*需转义\*$[]仅整数无需转义支持括号复合运算$(())仅整数语法、功能和 $[] 完全一致bc支持浮点小数scaleN控制小数位数可管道嵌入脚本5. exit 退出状态码exit 自定义数字设置脚本返回值执行echo $?读取上一条程序退出状态用于程序逻辑判断。6. wc 文件统计工具wc -l 文件名统计文件行数命令参数与通配符*之间必须添加空格否则报参数错误。

相关新闻

Seaborn heatmap 实战:5个真实数据集可视化案例与代码复现

Seaborn heatmap 实战:5个真实数据集可视化案例与代码复现

Seaborn热力图实战:5个真实数据集可视化案例与代码解析 引言:热力图在数据分析中的核心价值 热力图(Heatmap)作为数据可视化的重要工具,通过色彩变化直观呈现数据矩阵中的数值分布特征。在Python生态中,Se…

2026/7/10 11:11:47阅读更多 →
AI 自我改进中的 Harness Engineering

AI 自我改进中的 Harness Engineering

AI 自我改进为什么离不开 Harness Engineering Lilian Weng 近日发布了一篇关于 Harness Engineering for AI Self-Improvement 的研究综述,讨论 AI 递归自我改进(Recursive Self-Improvement, RSI)未来在多大程度上会依赖 harness。 RSI 的…

2026/7/10 11:11:47阅读更多 →
计算机毕业设计之琴行销售管理系统

计算机毕业设计之琴行销售管理系统

网络的广泛应用给生活带来了十分的便利。所以把琴行销售管理与现在网络相结合,利用JSP技术建设琴行销售管理系统,实现琴行销售管理的信息化。则对于进一步提高琴行销售管理发展,丰富琴行销售管理经验能起到不少的促进作用。琴行销售管理系统能…

2026/7/10 11:11:47阅读更多 →
STM32F071VB与AD7490 ADC的硬件设计与应用优化

STM32F071VB与AD7490 ADC的硬件设计与应用优化

1. AD7490与STM32F071VB的硬件协同设计 AD7490是一款12位高速低功耗模数转换器(ADC),而STM32F071VB则是STMicroelectronics推出的Cortex-M0内核微控制器。这对组合在工业传感器采集、便携式医疗设备等场景中具有独特优势。 AD7490的关键参数包括: 12位…

2026/7/10 12:12:08阅读更多 →
OneMore插件:让OneNote变得更好的160个实用功能全解析

OneMore插件:让OneNote变得更好的160个实用功能全解析

OneMore插件:让OneNote变得更好的160个实用功能全解析 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore 你是否曾在使用OneNote时感到功能不够用&#xff1f…

2026/7/10 12:12:08阅读更多 →
【Cursor迁移权威白皮书】:基于1427份真实迁移日志分析,识别出89.6%失败案例的共性根源

【Cursor迁移权威白皮书】:基于1427份真实迁移日志分析,识别出89.6%失败案例的共性根源

更多请点击: https://codechina.net 第一章:Cursor迁移从 VS Code 的背景与价值全景 随着AI原生开发工具的演进,开发者对智能编码辅助的需求已从“语法补全”跃迁至“上下文感知的工程级协作”。Cursor作为基于VS Code内核深度重构的AI优先编…

2026/7/10 12:12:08阅读更多 →
M4芯片上安装Hermes实战:Metal适配、SIP精准放开与arm64e编译

M4芯片上安装Hermes实战:Metal适配、SIP精准放开与arm64e编译

1. 项目概述:这不是一次普通安装,而是一场针对 M4 芯片的“系统级适配攻坚” “在 M4 上安装 Hermes 备忘”——这短短十个字背后,藏着当前 macOS 生态里最真实、也最棘手的一类实操困境。它不是教你怎么双击拖进 Applications 文件夹&#x…

2026/7/10 12:12:08阅读更多 →
终极指南:Wand-Enhancer让WeMod客户端功能全面解锁

终极指南:Wand-Enhancer让WeMod客户端功能全面解锁

终极指南:Wand-Enhancer让WeMod客户端功能全面解锁 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod的高级功能限制而烦恼吗&…

2026/7/10 12:12:08阅读更多 →
Unity战斗系统开发:ABC插件核心架构与实战配置指南

Unity战斗系统开发:ABC插件核心架构与实战配置指南

1. 项目概述:ABC插件是什么,以及为什么你需要它如果你正在开发一款带有角色战斗、技能释放的游戏,无论是ARPG、MMO还是带有动作元素的RPG,你大概率会遇到一个核心难题:如何高效、优雅地管理角色的能力(Abil…

2026/7/10 12:07:08阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/10 12:10:00阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/9 9:45:20阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/10 4:59:05阅读更多 →
浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比当你在浏览器地址栏敲入一个网址时,背后可能隐藏着一场关于"要不要重新下载资源"的精密博弈。这场博弈的裁判是HTTP缓存机制,而304状态码则是这场博弈…

2026/7/10 0:00:01阅读更多 →
RoboWits:面向创造性问题求解的双臂机器人认知推理基准

RoboWits:面向创造性问题求解的双臂机器人认知推理基准

1. 项目概述:这不是又一个机器人抓取数据集,而是一次对“思考力”的压力测试 RoboWits——这个名字里藏着两个关键信号:“Robo”直指物理世界中的具身智能体,“Wits”则毫不掩饰地指向人类最核心的认知能力:机敏、判断…

2026/7/10 0:00:01阅读更多 →
5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Windows…

2026/7/10 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/9 9:45:20阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/9 15:50:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/9 14:14:17阅读更多 →