Shell脚本入门:从零构建你的第一个bash脚本
一、使用多个命令串联与管道Shell脚本的核心能力之一是将多个命令组合执行。1. 分号串联顺序执行将多个命令放在同一行用分号;隔开Shell会按顺序依次执行bashdate ; who效果先显示当前日期时间再显示当前登录用户列表。2. 管道连接传递结果使用管道符|可以将前一个命令的输出作为后一个命令的输入最终只显示最后一个命令的输出bashdate | who效果date的输出被传给who但who不接收标准输入所以实际上等同于只执行who。更典型的管道示例bashls -l | grep .sh二、创建与执行Shell脚本文件1. 创建脚本文件使用vim创建.sh后缀的文件第一行必须指定解释器bash#!/bin/bash# 这是一个注释echo Hello, Shell!#! 告诉系统用哪个Shell程序来运行脚本普通#用于注释2. 执行脚本的两种方法方法一直接调用bash命令bashbash test.sh方法二赋予可执行权限后用路径执行bashchmod x test.sh./test.sh # 相对路径# 或 /home/zhang/zz/sh_script/test.sh 绝对路径如果不加执行权限会报错 Permission denied三、echo命令与消息显示echo用于向控制台输出文本消息帮助用户了解脚本运行状态。基础用法bashecho 正在执行脚本...-n 参数不换行将文本和后续命令输出显示在同一行bash#!/bin/bashecho -n 当前用户是who输出当前用户是zhang pts/0 2026-07-10 10:30四、变量使用1. 引用环境变量在变量名前加$即可引用bash#!/bin/bashecho 当前用户家目录$HOMEecho 当前路径$PWD如果只想显示$符号本身需要加反斜杠转义bashecho \$HOME 是环境变量2. 自定义变量由字母、数字、下划线组成长度≤20区分大小写赋值时两边不能有空格bash#!/bin/bashnamezhangage20echo 姓名$name年龄$age脚本退出后变量在命令行中不可见局部变量3. 命令替换——将命令输出赋给变量两种语法bash# 反引号方式旧current_datedate %y%m%d# $()方式推荐更清晰current_date$(date %y%m%d)实战生成唯一文件名bash#!/bin/bashprefixbackupdate_suffix$(date %y%m%d)filename${prefix}_${date_suffix}.logecho 生成的文件名$filename五、wc命令——统计文件行数wcword count默认输出三个值行数、词数、字节数。常用参数参数含义-l只显示行数-w只显示词数-c只显示字节数示例bash# 查看单个脚本的行数wc -l test.sh# 查看所有.sh文件的总行数wc -l *.sh六、数学运算Shell默认只支持整数运算有四种方式。1. expr命令bashexpr 100 50expr 100 \* 2 # 乘号需要转义注意运算符与数字之间必须有空格2. $[ ] 或 $(( )) 推荐bashecho $[100 * (50 - 45)] # 输出 500echo $((100 / 52)) # 输出 1整数除法不需要转义符空格可有可无支持变量basha10b3echo $[a * b] # 输出 303. bc计算器支持浮点数bc是内建计算器支持浮点运算。命令行交互bashbcscale410/3quit在脚本中使用bcbash#!/bin/bashresult$(echo scale4; 100 / 52 | bc)echo 结果$result注意options和expression之间用分号;隔开先写scale再写表达式七、退出状态码每个命令执行完毕后都会返回一个0~255的整数值0表示成功非0表示失败。查看退出状态码bashls /homeecho $? # 显示上一条命令的退出码在脚本中自定义退出码bash#!/bin/bashecho 执行完毕exit 5 # 手动指定退出码为5执行后运行echo $?会显示5。---八、综合实战脚本将以上知识点整合到一个脚本中bash#!/bin/bash# 综合示例脚本echo -n 开始执行时间date# 使用命令替换生成文件名filenamereport_$(date %y%m%d).txtecho 本次报告将保存为$filename# 自定义变量user_namezhangecho 操作者$user_name# 数学运算整数a100b45result$[a * (50 - b)]echo 100*(50-45) $result# 浮点数运算使用bcfloat_result$(echo scale2; 100 / 52 | bc)echo 100/52 $float_result# 统计脚本自身行数line_count$(wc -l $0)echo 本脚本共有 $line_count 行echo 脚本执行完毕正常退出exit 0执行结果截图示意请根据实际运行截图替换开始执行时间2026年 07月 10日 星期五 10:30:00 CST本次报告将保存为report_260710.txt操作者zhang100*(50-45) 500100/52 1.92本脚本共有 18 行脚本执行完毕正常退出九、知识框架总结类别命令/语法用途关键点多命令顺序执行命令间无关管道\|传递输出只显最终结果脚本创建#!/bin/bash指定解释器必须第一行执行脚本bash/chmod x运行脚本路径或命令输出消息echo显示文本-n不换行引用变量$VAR取变量值环境/自定义命令替换$(...)命令输出附变量推荐写法行数统计wc -l统计行数支持通配符整数运算$[...]/$((...))数学计算不用转义浮点运算bc浮点数计算需scale退出状态$?/exit检查/设置退出码0成功

相关新闻

Cyclone IV FPGA 数码管动态扫描:20us 刷新周期下 6 位无闪烁显示原理与实现

Cyclone IV FPGA 数码管动态扫描:20us 刷新周期下 6 位无闪烁显示原理与实现

Cyclone IV FPGA 数码管动态扫描:20μs刷新周期下6位无闪烁显示原理与实现当你在Cyclone IV FPGA开发板上看到6位数码管同时显示时、分、秒信息时,是否好奇过背后的技术原理?本文将深入剖析动态扫描技术的核心机制,特别是20微秒刷…

2026/7/11 6:19:09阅读更多 →
《HarmonyOS技术精讲-Core Vision Kit》第8篇:图像标签分类

《HarmonyOS技术精讲-Core Vision Kit》第8篇:图像标签分类

《HarmonyOS技术精讲-Core Vision Kit》第8篇:图像标签分类 实际开发中的问题 HarmonyOS NEXT 开发里,Core Vision Kit 的图像标签分类能力经常被误解。很多人第一次接触这个 API 时,会觉得“不就是调用个接口返回几个标签吗”,但…

2026/7/11 6:19:09阅读更多 →
Hermes Agent框架实战:Loop Engineering理念与AI智能体开发指南

Hermes Agent框架实战:Loop Engineering理念与AI智能体开发指南

在实际 AI 应用开发中,很多团队都面临一个核心挑战:如何让 AI 模型不只是被动响应指令,而是能主动学习、记忆上下文、协作执行复杂任务,并且随着使用不断自我优化。传统基于 API 调用的开发模式往往需要开发者手动设计流程、维护状…

2026/7/11 6:19:09阅读更多 →
C语言实现高性能HTTP服务器:epoll与POST请求处理实战

C语言实现高性能HTTP服务器:epoll与POST请求处理实战

1. 项目概述:为什么用C语言处理HTTP POST请求? 在当今这个被各种高级语言和成熟框架包围的时代,一提到“高性能服务器”,很多人脑海里蹦出来的可能是Go、Java Netty,甚至是Rust。但今天,我想和你聊聊一个“…

2026/7/11 7:29:15阅读更多 →
Meta-Controller (元控制器)

Meta-Controller (元控制器)

定义: 一次性路由器,将传入请求分类后派发给对应的 specialist agent。路由器本身不执行任何任务。 核心思想: 像 “分诊台” 而非 “总控台”。由于其简单性和可预测性,这是生产多 agent 系统最常见的起步架构。 核心工作流: ① 接收用户请求 → ② Met…

2026/7/11 7:29:15阅读更多 →
UE4SS终极指南:如何快速掌握虚幻引擎脚本系统的核心功能

UE4SS终极指南:如何快速掌握虚幻引擎脚本系统的核心功能

UE4SS终极指南:如何快速掌握虚幻引擎脚本系统的核心功能 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS…

2026/7/11 7:29:15阅读更多 →
AI 电动玩具吉他智能功率 MOSFET 核心选型方案

AI 电动玩具吉他智能功率 MOSFET 核心选型方案

随着 AI 音效处理、智能灯光秀及触感反馈在电动玩具吉他中的普及,其对功率 MOSFET 的要求聚焦于:高效率、小体积、低功耗与高响应速度。微碧半导体(VBsemi)基于 Trench & SGT 先进工艺,为您提供覆盖电机驱动、灯光…

2026/7/11 7:29:15阅读更多 →
2026年云呼叫中心PoC验证:通信底座、高并发、工单集成三维评估方法

2026年云呼叫中心PoC验证:通信底座、高并发、工单集成三维评估方法

本文不推荐任何厂商,只提供一套可复用的PoC验证方法论。三个维度、九项指标、一份自查清单,帮你把选型从"听销售讲"变成"看数据说话"。一、为什么云呼叫中心选型必须靠PoC,而不能靠Demo 云呼叫中心选型有一个"两极困…

2026/7/11 7:29:15阅读更多 →
Unity游戏翻译神器:XUnity.AutoTranslator终极使用指南

Unity游戏翻译神器:XUnity.AutoTranslator终极使用指南

Unity游戏翻译神器:XUnity.AutoTranslator终极使用指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语游戏中的菜单、对话和界面而烦恼吗?XUnity.AutoTranslator正是你…

2026/7/11 7:24:15阅读更多 →
从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/10 12:29:21阅读更多 →
通达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阅读更多 →
Premiere Pro 2025安装失败原因与AGSIS验证绕过指南

Premiere Pro 2025安装失败原因与AGSIS验证绕过指南

1. 为什么2025版PR安装比以往更“磨人”?——从弹窗警告到路径陷阱的真实处境 Premiere Pro 2025版不是简单的一次版本迭代,它是一道分水岭。我从去年底开始帮影视工作室、高校剪辑实验室和自由职业者部署2025环境,累计处理了137台设备&#…

2026/7/11 0:03:43阅读更多 →
5款实用macOS系统优化工具:让你的Mac运行更流畅更高效

5款实用macOS系统优化工具:让你的Mac运行更流畅更高效

5款实用macOS系统优化工具:让你的Mac运行更流畅更高效 【免费下载链接】open-source-mac-os-apps 🚀 Awesome list of open source applications for macOS. https://t.me/s/opensourcemacosapps 项目地址: https://gitcode.com/gh_mirrors/op/open-so…

2026/7/11 0:03:43阅读更多 →
5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux 想要让AI图像生成真正听从你的指挥吗&…

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

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

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

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

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

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

2026/7/10 22:20:33阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

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

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

2026/7/10 17:29:22阅读更多 →