当前位置: 首页 > news >正文

构建基本shell脚本

一、Xshell 实操

1.多命令实操

(1) 分号执行

date ; who

(2) 管道执行

date | who

2.脚本创建与运行实操

(1)新建 test.sh 基础脚本

date

who

(2)两种运行方式

方式1,无需权限

bash test.sh

方式2,赋权后运行

chmod u+x test.sh

ls -l test.sh

./test.sh

3.echo 输出实操

改造 test.sh 脚本

echo -n "当前系统时间:"

date

echo "登录用户列表:"

Who

4.变量实操

(1) 系统变量脚本 var_test.sh

echo "用户名:$USER,家目录:$HOME"

echo "转义符号:\$HOME"

(2) 自定义变量

name="Tom"

echo $name

(3) 命令替换生成日志

now=$(date +%y%m%d)

log="log.$now"

who > $log

5.wc 统计实操

wc -l *.sh

6.数学运算实操

(1) 整数运算脚本 math.sh

#!/bin/bash

res1=$((100*(50-45)))

res2=$[100/52]

echo $res1 $res2

(2) bc 浮点运算

float_result=$(echo "scale=4;100/52" | bc)

echo $float_result

7.退出状态码实操

(1) 查看命令状态

ls math.sh

echo $?

ls nofile

echo $?

(2) 自定义退出脚本 math.sh

exit 5

执行验证:

./math.sh

echo $?

二、理论知识框架

1.单行多命令执行

(1) 分号;

① 概念:同一行分隔多条命令,依次完整执行,每条命令独立输出,无数据传递。

② 参数说明:无额外参数,仅作为命令分隔符。

(2) 管道|

① 概念:将前一条命令输出作为后一条输入,仅展示最终执行结果。

② 参数说明:无额外参数,用于命令数据流传递。

2.Shell 脚本创建与运行

(1) 脚本编写规则

① .sh为脚本后缀,首行#!/bin/bash指定 bash 解释器;#单行注释。

(2) 运行方式

① bash 脚本名:直接调用解释器,无需执行权限。

② ./ 脚本名:相对路径运行,文件必须拥有 x 执行权限,chmod u+x添加权限。

3.echo 输出控制

(1) echo "文本":默认输出后自动换行。

(2) echo -n "文本":-n 参数取消末尾换行,文字与后续输出同行。

4.Shell 变量

(1) 系统环境变量

① $变量名读取变量值,\$转义原样打印符;常用:USER、UID、HOME。

(2) 自定义变量

① 命名:字母、数字、下划线,长度≤20 字符;赋值格式变量=值,等号两侧无空格;仅脚本内生效。

(3) 命令替换

① 两种写法`命令`、$(命令),抓取命令执行结果赋值变量,推荐$(命令)。

5.wc 统计命令

(1) 基础功能:默认输出行数、单词、字节。

(2) 核心参数-l:仅统计文件行数;*通配符批量匹配所有.sh 文件。

6.数学运算

(1) 整数运算

① expr:运算符两侧必须空格,乘号 * 需转义\*。

② $[] / $(()):无需转义,脚本推荐写法,支持嵌套表达式。

(2) bc 浮点运算

① bash 仅支持整数,bc 实现小数计算;scale=N设置小数保留位数;交互模式用 quit 退出。

② 脚本调用格式:变量=$(echo "scale=N;运算式" | bc),scale 语句必须前置。

7.退出状态码

(1) 特殊变量$?:存储上一条命令执行状态,0 代表成功,1 通用错误,126 无权限,127 命令不存在。

(2) exit n:脚本自定义退出码,n 取值范围 0~255。

三、常用命令速查

1. #!/bin/bash:脚本首行解释器声明

2. echo -n:输出不换行

3. ;、|:多命令分隔、管道传参

4. wc -l:统计文件行数

5. expr、[]、(()):整数运算

6. bc scale:浮点精度控制

7. $():命令替换

8. $?:读取执行状态

9. exit n:自定义退出码

10.chmod u+x:添加脚本执行权限

四、知识点总结

1. .sh 脚本首行标注解释器,分号并行命令,管道传递输出。

2.脚本两种运行方式,./ 运行必须添加 x 执行权限。

3. echo 控制换行;变量分系统、自定义,$() 抓取命令输出生成文件。

4. wc 统计行数;整数多种运算写法,bc 完成小数计算。

5. $? 查看命令执行结果,exit 自定义脚本退出状态码。

http://www.jsqmd.com/news/1159718/

相关文章:

  • 扩展卡尔曼滤波 (EKF) 实战:处理 3 类非线性系统的状态估计
  • Anthropic拟全面封禁地下通道
  • Shell脚本精读 · S12-02 | 语法检查与 ShellCheck:静态发现问题
  • ClawdBot:轻量级自动化代理框架实现7×24数字分身
  • 大模型自检机制:提升LLM输出可靠性的工程实践
  • C++ 操作 Word 文档 2 大方案对比:COM自动化 vs 第三方库(Aspose.Words)
  • 实用AI教程:从RAG构建到模型部署的工程实践指南
  • 计算机毕业设计之社区居家养老服务系统
  • 工业级负载控制方案:TPD2015FN与PIC18LF4525应用解析
  • 大数据毕设项目:基于 Django 的 IT 岗位供需平衡分析系统的设计与实现 基于 Django 的简历特征匹配招聘推荐系统 (源码+文档,讲解、调试运行,定制等)
  • COMSOL 6.0 固化反应接口实战:3步耦合热-化-力分析树脂变形
  • GEO系统实战:破解流量瓶颈与去中心化发布
  • vLLM 与 SGLang 推理框架性能横评:吞吐、延迟与成本深度剖析
  • CTF实战:ECDSA随机数重用漏洞分析与私钥破解
  • PCA / t-SNE / UMAP 极简可视化选型手册
  • 百度网盘提取码一键获取终极指南:告别繁琐搜索,5秒直达资源
  • Pytest参数化实战:接口自动化测试数据驱动与工程化实践
  • 开源免费!3步搞定Windows视频播放难题的LAV Filters终极方案
  • 湖北省世达实用外国语学校商务英语出国留学专业招生简章 - 湖北找学校
  • Cocos Creator入门:从零构建首个2D游戏项目实践指南
  • 参考 Claude Tag 设计:用 Claude API 实现团队级场景隔离、记忆边界与预算控制
  • SPICE 仿真器核心:MNA 处理电压源与非线性元件的 2 类方程分组策略
  • 小米账号解锁限制分析:1月1台与1年4台的策略解读与 2 种应对思路
  • 为什么不建议从零开发商城?只因我们靠开源商城省下了60%的研发成本
  • OpenClaw 2.6.4 Windows 安装与配置全指南
  • 专业的运营策划哪家好?四个核心维度筛选靠谱机构
  • STM32步进电机控制:20秒实现A4988驱动与精准时序
  • Windows智能体开发实战:从API调用到能力集成的系统级Agent构建
  • NCM解密终极指南:3分钟解锁你的网易云音乐收藏
  • 2026兰州冰块品牌Top榜:工业降温大冰块实力推荐! - 热点咨讯