尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Shell脚本入门基础详解
一、前言Shell脚本是Linux系统运维、自动化工作的核心工具通过将多条命令整合编写成脚本文件能够实现指令批量执行、任务自动化等功能。本文从零开始讲解Shell脚本基础语法、文件创建、变量使用、数学运算、状态码等核心知识点搭配完整实操案例新手也可快速上手练习。二、命令串联符号在Linux终端中可通过特定符号组合多条命令实现连续执行。分号 ;作用多条命令按顺序依次执行每条命令都会输出执行结果。示例先输出系统时间再输出当前登录用户信息。管道符 |作用将前一条命令的输出结果作为后一条命令的输入仅展示最终执行结果。三、Shell脚本创建与执行脚本文件规范• 脚本文件后缀统一为 .sh• 文件第一行必须书写解释器声明#!/bin/bash用于指定使用bash解析脚本• # 开头内容为注释脚本执行时会自动忽略。基础脚本示例命名为test.sh输出系统时间与登录用户datewho2. 两种执行方式调用bash直接执行无需执行权限语法bash 脚本文件名bash test.sh路径直接执行需要添加执行权限直接运行脚本前必须赋予文件执行权限否则会提示权限不足。• 添加执行权限chmod ux test.sh• 执行脚本./test.sh四、echo 输出命令echo 是脚本中最常用的输出命令用于打印文本、变量内容。基础用法正常输出字符串echo “查看当前登录用户”echo -n取消换行让后续内容和当前内容在同一行输出echo -n “当前系统时间”date五、Shell 变量变量是脚本存储数据的载体分为系统环境变量和自定义变量两大类。系统环境变量系统自带变量记录用户、路径、权限等系统信息调用格式变量名。常用变量变量名。 常用变量变量名。常用变量USER当前用户名、UID用户ID、UID用户ID、UID用户ID、HOME用户家目录。示例echo “当前用户USERecho用户IDUSER echo 用户IDUSERecho用户IDUID”echo “家目录$HOME”加反斜杠 \ 可原样输出 $符号不解析变量echo “原始字符串$HOME”2. 自定义变量命名规则由字母、数字、下划线组成区分大小写赋值规则等号前后绝对不能加空格作用域仅在当前脚本内生效。示例命令替换将命令的执行结果赋值给变量两种写法推荐使用 $(命令) 格式。• 写法1反引号命令• 写法2$(命令)支持嵌套兼容性更好示例获取系统时间赋值给变量日期格式化用于生成日志文件名六、wc 内容统计命令wc 用于统计文件的行数、单词数、字节数。• 直接使用 wc 文件名依次输出 行数、词数、字节数• wc -l 文件名仅统计文件行数• wc -l *统计当前目录下所有文件的行数。示例七、Shell 数学运算Shell 默认只支持整数运算浮点数运算需要借助 bc 计算器工具。整数运算三种常用方式expr 命令运算符前后必须加空格乘号 * 需要转义为 *$[] 格式无需空格、无需转义写法简洁$(( )) 格式主流推荐写法功能强大浮点数运算bc 工具bc 是Linux内置计算器通过管道符在脚本中调用scale 用于指定保留小数位数。保留5位小数计算除法var(echoscale5;8/3∣bc)echo计算结果(echo scale5; 8/3 | bc) echo 计算结果(echoscale5;8/3∣bc)echo计算结果var八、脚本退出与状态码退出状态码 $?$? 是特殊变量用于保存上一条命令/脚本的执行状态。常见状态码含义• 0命令/脚本执行成功• 1通用未知错误• 126文件存在但无法执行• 127未找到对应命令。查看状态码命令exit 自定义退出码在脚本中使用 exit 数字可以手动指定脚本退出后的状态码。示例脚本#!/bin/bashecho “脚本执行完毕”exit 8执行脚本后输入 echo $?会输出自定义状态码 8。九、实操避坑总结脚本首行务必添加 #!/bin/bash 解释器声明直接 ./ 运行脚本前必须执行 chmod ux 脚本名 赋予执行权限自定义变量赋值时 前后不能有空格expr 运算运算符必须带空格* 必须转义原生Shell不支持小数运算浮点数计算必须使用 bc脚本内定义的变量无法在脚本外的终端直接使用。
RELATED

相关推荐

数字合规落地实战:智能锁如何解决网约房民宿监管与运营双重难题

数字合规落地实战:智能锁如何解决网约房民宿监管与运营双重难题

随着国内网约房、分散式民宿行业监管体系持续规范化,公安“实名、实人、实证、实时”四实登记制度成为行业合法经营的硬性标准。区别于传统酒店的前台实名登记、专人值守模式,网约房、民宿普遍存在房源分散、租客流动性大、无固定值守、入住频次高的特点…

📅 2026/10/18 22:28:50
Redis基础day02

Redis基础day02

一、Jedis 1. Jedis官网地址 https://github.com/redis/jedis 2. 快速入门 &#xff08;1&#xff09;引入Maven依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version> </d…

📅 2026/10/1 12:28:26
EN 18031标准落地经验:联网无线电设备网络安全合规的关键节点与常见误区

EN 18031标准落地经验:联网无线电设备网络安全合规的关键节点与常见误区

一、从RED指令到EN 18031&#xff1a;合规维度发生了哪些变化 2025年8月1日&#xff0c;欧盟无线电设备指令&#xff08;RED 2014/53/EU&#xff09;第3.3(d)、(e)、(f)条款进入强制实施阶段。这三项条款分别涉及网络防护、个人隐私保护和防欺诈能力。与以往RED框架下的射频、电…

📅 2026/10/12 0:23:24
MORE NEWS

更多资讯

📰

JavaWeb网上商城源码:新手入门的最小可控闭环系统

简介&#xff1a;本资源是一套完整的JavaWeb课程设计级网上商城购物系统实现&#xff0c;面向高校计算机专业学生及Java初学者&#xff0c;用于掌握Servlet、JSP、MySQL数据库交互与MVC基础架构等核心Web开发技能。压缩包共73个文件&#xff0c;含14个JSP页面&#xff08;负责前…

📰

Java Swing酒店管理系统实战:从课设到可交付的GUI+数据库全链路

简介&#xff1a;这是一套面向计算机专业本科生课程设计的Java Swing桌面应用实战项目&#xff0c;完整实现酒店宾馆管理核心功能&#xff0c;适用于课设答辩、Java GUI编程入门与数据库综合实践。资源包含全部可运行源码、MySQL数据库脚本及配套GUI界面资源&#xff0c;下载解…

📰

Python 量化实战:如何建立从实时行情到策略信号的数据链路?

一句话结论&#xff1a; 实时行情不能直接等同于交易信号。一个可靠的量化数据链路&#xff0c;需要依次完成行情获取、数据校验、时间与标的标准化、指标计算和信号生成&#xff0c;并在每个环节保留必要的异常检查&#xff0c;避免错误数据直接进入策略。 摘要 在 Python 量…

📰

FVD跟驰模型MATLAB实操:MIT交叉口仿真与参数调优

简介&#xff1a;本资源是一份面向交通工程研究者与智能交通系统学习者的FVD跟驰模型仿真代码包&#xff0c;聚焦交叉口场景下的车辆动态行为建模与仿真分析。资源基于MIT环境实现&#xff0c;适用于交通流理论教学、跟驰模型算法验证及信号交叉口通行效率评估等科研与实践任务…

📰

基于LLM的旅游行程智能规划系统毕业设计源码(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌ 专注于VUE,小程序&#xff0c;安卓&#xff0c;Java,python,物联网专业&#xff0c; 从事毕业指导&#xff0c;项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一种基…

📰

同一篇论文AIGC检测各章AI率差很多:分段差异成因与逐章应对

一份AIGC检测报告摊开&#xff0c;有人看到摘要标红、材料方法却干净&#xff0c;也有人恰好相反——讨论章被标红&#xff0c;综述段落反而安静。同一份稿子&#xff0c;各章读数为何对不上&#xff1f;下面从章节写作惯例讲起&#xff0c;先说差异从哪来&#xff0c;再按章节…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬