Linux  Shell编程基础 构建基本脚本 课堂笔记
一、课程核心内容1. 多行命令串联2. Shell脚本文件创建与运行3. echo显示输出消息4. 变量使用环境变量、自定义变量、命令替换赋值5. 输入输出重定向6. 管道 |7. 数学运算expr、$[]、bc浮点计算8. 脚本退出与退出状态码二、使用多个命令1. 同一行多条命令使用**分号;**分隔按顺序依次执行示例 date ; who2. 作用一次性连续执行多条独立指令等价于分行逐条运行命令三、创建Shell脚本文件1. 文件头部规范脚本首行必须声明解释器 #!/bin/bash代表普通注释仅首行#!具备特殊作用告知系统调用bash执行脚本注释写法 # 注释描述文字2. 基础脚本示例bash#!/bin/bash# 打印系统时间与当前登录用户datewho3. 脚本运行流程1. 赋予文件执行权限 chmod ux 脚本名.sh2. 执行方式通过相对/绝对路径运行 ./shellscript.sh3. 报错Permission denied缺少执行权限执行chmod完成授权4. 补充方案将脚本所在目录添加至PATH环境变量可直接输入脚本名运行四、显示消息 echo1. 基础用法 echo 文本内容 字符串可加引号也可不加引号输出2. 引号匹配规则字符串内包含单引号外层用双引号包裹包含双引号外层用单引号包裹3. -n 参数输出结束不自动换行文本内容与后续命令输出显示在同一行#/bin/bash echo -n 当地时间: date echo 当前登录系统的用户: who五、使用变量1. 系统环境变量调用格式 $变量名 常用变量 $USER 、 $UID 、 $HOME如需原样输出美元符号$需添加反斜杠转义 echo 商品价格是\$152. 自定义用户变量1. 命名规则仅由字母、数字、下划线组成长度不超过20字符区分大小写2. 赋值规范变量值等号左右两侧禁止添加空格3. 变量调用使用 $变量名 读取存储内容guestTom days5 echo $guest 于$days天前登录系统3. 命令替换将命令执行结果赋值给变量两种标准写法1. 反引号 命令2. $(命令) 可读性更强推荐使用示例out_datedate out_user$(who) # %y%m%d 格式化日期输出两位年份、月份、日期 today$(date %y%m%d) ls /usr/bin -al log.$today六、输入输出重定向1. 输出重定向 覆盖写入文件 date datefile 若目标文件已存在清空原有内容后写入新数据 追加写入文件 who datefile 保留文件原有内容在文件末尾新增数据2. 输入重定向 将文件内部内容作为命令的输入源常搭配wc命令统计文本信息wc datefilewc命令输出三项数据文本行数、单词数量、字节总数3. 内联输入重定向 无需依托文件直接在命令行临时输入数据需设置首尾完全一致的文本标记作为分界wc end test string1 test string2 end七、管道 |1. 核心作用把前一条命令的标准输出直接作为后一条命令的标准输入无需生成临时文件中转2. 语法格式 命令1 | 命令2 | 命令3 支持无限级管道串联3. 典型使用场景过滤并分页查看大量输出内容 ps -ef | grep 用户名 | more八、数学运算1. expr 命令老式整数运算工具运算符两侧必须添加空格乘号*需要使用反斜杠转义 \*示例 expr 10 \* 5支持四则运算、数值比较、字符串截取、字符串长度计算等功能2. $[] 方括号运算推荐用于整数运算标准格式 变量$[数学表达式] 运算符无需额外转义示例var1$[100 * (50 - 45)] var2$[100 / 52]特性仅支持整数计算除法会直接舍弃小数部分3. bc 浮点计算器支持小数运算1. 交互式使用终端输入bc进入交互界面内置scale变量控制保留小数位数默认scale0无小数输出2. 脚本内调用命令替换方式单行表达式基础格式 变量$(echo scale小数位数; 表达式 | bc)多行表达式写法var$(bcEOF scale3 a10*20 ba/3 EOF ab )九、退出脚本 退出状态码1. 每一条命令执行完成后都会生成0~255区间的退出状态码内置变量 $? 可读取上一条命令的状态码2. 常见状态码含义0命令执行成功1通用未知错误2非法shell命令126文件存在但无执行权限127未找到对应命令130程序被CtrlC强制终止3. exit指令手动自定义脚本退出码写法 exit 数字4. 默认规则脚本未使用exit时会以最后一条执行命令的状态码作为脚本整体退出码十、章节小结1. 单行命令可用;串联多条指令脚本文件可批量存储、批量执行多条命令2. 变量分为系统环境变量与自定义变量通过$读取变量值命令替换可捕获命令输出存入变量3. // 实现文件输入输出重定向管道|可直接传递多条命令之间的数据流4. 整数运算可选expr、$[]浮点运算需借助bc工具通过scale控制小数精度5. 所有命令执行后都会产生退出状态码$?查看状态exit可自定义脚本返回码课后作业1课后作业2课后练习3课后练习4课后练习5

相关新闻

数据科学职业路径:基于gh_mirrors/r5/R项目的完整学习路线图

数据科学职业路径:基于gh_mirrors/r5/R项目的完整学习路线图

数据科学职业路径:基于gh_mirrors/r5/R项目的完整学习路线图 【免费下载链接】R Exercises (incl. analyses) with R language (mathstatistics) 项目地址: https://gitcode.com/gh_mirrors/r5/R 想要成为一名数据科学家,但不知道从哪里开始&…

2026/7/10 17:56:13 阅读更多 →
一文读懂GPT-5.6 与 ChatGPT Work核心基础知识

一文读懂GPT-5.6 与 ChatGPT Work核心基础知识

写在前面 欢迎大家关注Rocky的知乎:Rocky Ding AIGC/LLM/AI Agent算法工程师/开发工程师面试面经秘籍分享:WeThinkIn/Interview-for-Algorithm-Engineer欢迎大家Star~ AIGC时代的 《三年面试五年模拟》AI算法工程师/开发工程师求职面试秘籍独…

2026/7/10 17:54:13 阅读更多 →
CharacterPickerView实战教程:三级联动选择器的终极实现方案

CharacterPickerView实战教程:三级联动选择器的终极实现方案

CharacterPickerView实战教程:三级联动选择器的终极实现方案 【免费下载链接】CharacterPickerView 项目地址: https://gitcode.com/gh_mirrors/ch/CharacterPickerView CharacterPickerView是一款功能强大的Android三级联动选择器组件,能够帮助…

2026/7/10 17:54:13 阅读更多 →

最新新闻

基于PIC18与PAM8904的智能报警系统设计

基于PIC18与PAM8904的智能报警系统设计

1. 项目背景与核心需求 在工业控制、智能家居和安防系统中,可靠的事件通知机制是保障系统安全运行的关键环节。传统蜂鸣器报警方案存在音调单一、音量不可调、功耗高等痛点。基于PIC18LF46K22微控制器与PAM8904音频驱动器的组合,我们可以构建一个支持多级…

2026/7/10 18:51:19 阅读更多 →
3个认知突破:重新思考网络爬虫识别的新范式

3个认知突破:重新思考网络爬虫识别的新范式

3个认知突破:重新思考网络爬虫识别的新范式 【免费下载链接】crawler-user-agents Syntactic patterns of HTTP user-agents used by bots / robots / crawlers / scrapers / spiders. pull-request welcome :star: 项目地址: https://gitcode.com/gh_mirrors/cr/…

2026/7/10 18:51:19 阅读更多 →
5分钟打造智能副屏:Turing Smart Screen Python终极指南

5分钟打造智能副屏:Turing Smart Screen Python终极指南

5分钟打造智能副屏:Turing Smart Screen Python终极指南 【免费下载链接】turing-smart-screen-python Unofficial Python system monitor and library for small IPS USB-C displays like Turing Smart Screen / TURZX 项目地址: https://gitcode.com/GitHub_Tre…

2026/7/10 18:51:19 阅读更多 →
终极XML编辑器指南:如何用XML Notepad快速编辑和验证XML文件

终极XML编辑器指南:如何用XML Notepad快速编辑和验证XML文件

终极XML编辑器指南:如何用XML Notepad快速编辑和验证XML文件 【免费下载链接】XmlNotepad XML Notepad provides a simple intuitive User Interface for browsing and editing XML documents. 项目地址: https://gitcode.com/gh_mirrors/xm/XmlNotepad XML …

2026/7/10 18:49:19 阅读更多 →
KOReader云同步:让多设备阅读像呼吸一样自然

KOReader云同步:让多设备阅读像呼吸一样自然

KOReader云同步:让多设备阅读像呼吸一样自然 【免费下载链接】koreader An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices 项目地址: https://gitcode.…

2026/7/10 18:49:19 阅读更多 →
终极指南:使用ncmdumpGUI解锁网易云音乐NCM加密文件的完整教程

终极指南:使用ncmdumpGUI解锁网易云音乐NCM加密文件的完整教程

终极指南:使用ncmdumpGUI解锁网易云音乐NCM加密文件的完整教程 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌…

2026/7/10 18:47:18 阅读更多 →

日新闻

STM32与LTC1864高精度ADC的SPI通信实现

STM32与LTC1864高精度ADC的SPI通信实现

1. 项目背景与核心需求在工业控制和嵌入式系统开发中,模拟信号与数字系统的无缝集成一直是工程师面临的关键挑战。LTC1864作为一款16位高精度ADC转换器,配合STM32F101ZG这类主流微控制器,能够构建高性能的模拟信号采集系统。这种组合特别适合…

2026/7/10 0:03:07 阅读更多 →
猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页视频无法下载而烦恼吗&am…

2026/7/10 0:05:09 阅读更多 →
直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

1. 直流有刷电机驱动方案概述在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便、成本低廉等优势,仍然是许多应用场景的首选驱动方案。TC78H653FTG作为东芝推出的新一代H桥驱动器,与MKV46F256VLH16微控制器配合使用&#xff0c…

2026/7/10 0:05:09 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/9 21:41:05 阅读更多 →

月新闻