从零开始学习嵌入式----Linux系统中shell脚本

目录

Shell脚本入门:玩转功能语句和数组,提升你的效率!

一、功能语句:让你的脚本更灵活

1. 条件语句:if、else、elif

2. 循环语句:for、while

二、数组:处理多项数据的好帮手

1. 声明数组

2. 访问数组元素

3. 获取数组长度

4. 遍历数组

三、案例实战:批量修改文件名

四、总结

五、思维导图


Shell脚本入门:玩转功能语句和数组,提升你的效率!

Shell脚本是Linux系统管理员和开发人员的必备技能,它可以帮助你自动化日常任务,提高工作效率。在这篇文章中,我们将深入浅出地介绍Shell脚本中的功能语句和数组,并结合实际案例,带你快速入门。

一、功能语句:让你的脚本更灵活

1. 条件语句:if、else、elif

条件语句是编程语言的基础,Shell脚本也不例外。if语句允许你根据条件执行不同的代码块。

#!/bin/bash

#  #
# 判断文件是否存在
if [ -f 「myfile.txt」 ]; then
  echo 「文件已找到!」
else
  echo 「文件不存在!」
fi

在这个例子中,如果myfile.txt文件存在,就会输出「文件已找到!」,否则输出「文件不存在!」。

elif语句用于添加多个条件判断,例如:

#!/bin/bash

#  #
# 判断分数等级
score=85

#  #
if [ $score -ge 90 ]; then
  echo 「优秀」
elif [ $score -ge 80 ]; then
  echo 「良好」
elif [ $score -ge 70 ]; then
  echo 「中等」
else
  echo 「不及格」
fi

2. 循环语句:for、while

循环语句用于重复执行一段代码,直到满足特定条件。

  • for循环:适用于遍历列表中的元素。

#!/bin/bash

#  #
# 遍历列表
names=(「Alice」 「Bob」 「Charlie」)
for name in 「${names[@]}」; do
  echo 「Hello, $name!」
done

  • while循环:适用于在条件满足时重复执行代码块。

#!/bin/bash

#  #
# 计算1到10的和
count=1
sum=0

#  #
while [ $count -le 10 ]; do
  sum=$((sum + count))
  count=$((count + 1))
done

#  #
echo 「1到10的和为:$sum」

二、数组:处理多项数据的好帮手

数组可以存储一系列数据,方便你对多个数据进行操作。

1. 声明数组

# 方法一:使用括号
names=(「Alice」 「Bob」 「Charlie」)

#  #
# 方法二:逐个赋值
names[0]=「Alice」
names[1]=「Bob」
names[2]=「Charlie」

2. 访问数组元素

使用${数组名[索引]}的方式访问数组元素,索引从0开始。

echo ${names[0]}  # 输出 Alice

3. 获取数组长度

使用${#数组名[@]} 获取数组长度。

echo ${#names[@]}  # 输出 3

4. 遍历数组

可以使用for循环遍历数组:

#!/bin/bash

#  #
# 遍历数组并输出每个元素
for name in 「${names[@]}」; do
  echo $name
done

三、案例实战:批量修改文件名

假设你需要将当前目录下所有.txt文件的后缀名改为.log,可以编写如下Shell脚本:

#!/bin/bash

#  #
# 获取所有.txt文件
files=(*.txt)

#  #
# 遍历文件列表,修改文件名
for file in 「${files[@]}」; do
  new_file=「${file%.txt}.log」
  mv 「$file」 「$new_file」
  echo 「已将 $file 重命名为 $new_file」
done

四、总结

本文介绍了Shell脚本中的功能语句和数组,并结合案例讲解了如何使用它们。熟练掌握这些基本语法,可以帮助你编写更强大、更高效的Shell脚本,自动化完成各种任务。当然,Shell脚本博大精深,还有很多高级语法和技巧需要我们不断学习和探索。

五、思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/792188.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【CSS in Depth 2精译】2.5 无单位的数值与行高

当前内容所在位置 第一章 层叠、优先级与继承第二章 相对单位 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高 ✔️2.6 自定义属性2.7 本章小结 2.5 无单位的数值与行高 有些属性允许使用无单位的数值(unitless value…

《信息技术时代》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问:《信息技术时代》是不是核心期刊? 答:不是,是万方维普收录的正规学术期刊。 问:《信息技术时代》级别? 答:省级。主管单位:深圳湾科技发展有限公司 主办单位&am…

【Pytorch实用教程】transformer中创建嵌入层的模块nn.Embedding的用法

文章目录 1. nn.Embedding的简单介绍1.1 基本用法1.2 示例代码1.3 注意事项2. 通俗的理解num_embeddings和embedding_dim2.1 num_embeddings2.2 embedding_dim2.3 使用场景举例结合示例1. nn.Embedding的简单介绍 nn.Embedding 是 PyTorch 中的一个模块,用于创建一个嵌入层。…

cdr捕捉点怎么设置---模大狮模型网

在 CorelDRAW 中,捕捉点(Snap Points)是一种非常有用的功能,它可以帮助你在绘制和编辑图形时对齐、定位和调整对象。以下是关于如何设置捕捉点的简要步骤: 打开和设置捕捉点: 打开捕捉点控制器: 在 CorelDRAW 的顶部菜…

AI算力发展现状与趋势分析

综合算力发展现状与趋势分析 在数字经济的疾速推动下,综合算力作为驱动各类应用和服务的新型生产力,其价值日益凸显。我们深入探讨了综合算力的定义、重要性以及当前发展状况;并从算力形态、运力性能和存储技术等角度,预见了其发展…

斐讯N1盒子刷入Armbian并安装Docker拉取网络下行流量教程

一直在跑PCDN,目前主推八米云跟点心云,八米单价比点心更高,业务都一样,直播业务。 两种刷机教程我也发下。 八米云:点此跳转 点心云:点此跳转 最近各运营商对PCDN打击力度加大,需求拉取下行流量…

活动策划秘籍:如何让企业活动引爆市场?

作为一个活动策划,我的经验是,活动策划是一场精心编排的交响乐,每一个音符都要恰到好处。 想要做好企业活动策划工作的关键在于综合考虑多个方面,并确保每个环节的顺畅执行。 以下是7个关键要素,只要用心体会&#x…

【C++】类中的六个默认成员函数(构造函数、析构函数、拷贝构造函数、复制重载函数等)

类中的六个默认成员函数 默认成员函数为了解决C语言存在的一些问题而诞生,默认存在于类中,进行某种操作时会自动调用默认成员函数,如想在此种操作中自动实现某种操作,可以手动定义此默认成员函数,如果手动定义则取代默…

强化学习驱动的狼人游戏语言智能体战略玩法

Language Agents with Reinforcement Learning for Strategic Play in the Werewolf Game 论文地址: https://arxiv.org/abs/2310.18940https://arxiv.org/abs/2310.18940 1.概述 在AI领域,构建具备逻辑推理、战略决策以及人类沟通能力的智能体一直被视为长远追求。大规模语…

Echarts 取消或改变鼠标移上效果

文章目录 问题分析解决补充:去掉鼠标移上去变小手问题 鼠标移动前 鼠标移动后 分析 鼠标一移上去老闪(显示浮框信息和图变大了) 解决 hoverAnimation:false即可解决 series: [{hoverAnimation:false,name:

从微分方程组构建 bbr 模型

描述分析 bbr 的文字自 2016 年底起至今从空白到泛滥,我自己在期间贡献了不少,本文又是一篇,但不同的是,本文尝试用闭环的数学模型给出一个 bbr 的全貌,顺便和 aimd 做对比。 先看带宽特性 bw(t),设瓶颈带…

力扣 hot100 -- 动态规划(下)

目录 💻最长递增子序列 AC 动态规划 AC 动态规划(贪心) 二分 🏠乘积最大子数组 AC 动规 AC 用 0 分割 🐬分割等和子集 AC 二维DP AC 一维DP ⚾最长有效括号 AC 栈 哨兵 💻最长递增子序列 300. 最长递增子序列…

数据结构JAVA

1.数据结构之栈和队列 栈结构 先进后出 队列结构 先进先出 队列 2.数据结构之数组和链表 数组结构 查询快、增删慢 队列结构 查询慢、增删快 链表的每一个元素我们叫结点 每一个结点都是独立的对象

一个spring boot项目的启动过程分析

1、web.xml 定义入口类 <context-param><param-name>contextConfigLocation</param-name><param-value>com.baosight.ApplicationBoot</param-value> </context-param> 2、主入口类: ApplicationBoot,SpringBoot项目的mian函数 SpringBo…

怎么在matlab中输出显示泵的流量-扬程和管路损失与流量均在一个表格里?讨论一下?

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

挂载磁盘目录(挂载一个u01的磁盘目录)

这里我们没有u01磁盘目录&#xff0c;需要重新挂载一个u01磁盘目录 查看当前文件系统使用情况 [rootlocalhost ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 devtmpfs devtmpfs 1.4G 0 1.4G 0% /dev tmpfs …

BigMarket-基础层持久化数据库

需求 工程对接数据库 图例 结构说明 app-主要用于启动&#xff0c;没有业务逻辑 domain-业务逻辑&#xff0c;如积分的兑换&#xff0c;抽奖&#xff0c; infrastructure-基础层&#xff0c;技术支持&#xff0c;数据服务数据持久化&#xff1a;MySQL&#xff0c;redis&am…

threeJS 模型过大加载速度慢优化体验

前言 模型一般都比普通的前端项目要大&#xff0c;普通的模型要在1MB&#xff0c;大一点的就上不封顶了。模型越大&#xff0c;电脑加载的时间就越长。为了避免用户判断为bug&#xff0c;或者随便点击导致产生其他bug。我们需要增加进度条来提示用户。 解决方案 增加加载动画…

【中项第三版】系统集成项目管理工程师 | 第 4 章 信息系统架构③ | 4.6

前言 第4章对应的内容选择题和案例分析都会进行考查&#xff0c;这一章节属于技术相关的内容&#xff0c;学习要以教材为准。本章分值预计在4-5分。 目录 4.6 网络架构 4.6.1 基本原则 4.6.2 局域网架构 4.6.3 广域网架构 4.6.4 移动通信网架构 4.6.5 软件定义网络 4.6…

全网最全,保姆级Stable Diffusion系列入门使用教程(图生图、LoRA、提示词权重),建议收藏!

大家好&#xff0c;我是画画的小强 今天将给大家讲解 Stable Diffusion 入门使用教程的 图生图、LoRA和提示词权重的教程&#xff0c;如果你还没有使用或者安装SD&#xff0c;那么可以看看我的往期入门教程AI绘画『Stable Diffusion』面向小白的免费AI绘画工具&#xff1a;解压…