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

7.Shell 流程控制

在Shell脚本中,流程控制语句用于根据条件执行不同的代码块。这些语句包括条件判断(如 if 语句)、循环(如 forwhileuntil 循环)以及跳转语句(如 breakcontinue)。

1.条件判断 - if 语句

if 语句用于基于条件执行不同的代码块。基本语法如下:

if else 
if [ condition ]; then# 条件为真时执行的代码
fi# if else 
if [ condition ]; then# 条件为真时执行的代码
else# 所有条件都不满足时执行的代码
fi# if elif else
if [ condition ]; then# 条件为真时执行的代码
elif [ another_condition ]; then# 另一个条件为真时执行的代码
else# 所有条件都不满足时执行的代码
fi

示例:

a=10
b=5if [ $a -eq $b ]; thenecho "a 等于 b"
elif [ $a -gt $b ]; thenecho "a 大于 b"
elseecho "a 小于 b"
fi

2.循环 - for 循环

for 循环用于重复执行一系列命令,直到指定的次数或列表中的所有元素都被处理完毕。基本语法如下:

for variable in list; do# 循环体
done

示例:

# 遍历数字
for i in 1 2 3 4 5; doecho "Number: $i"
done# 使用序列
for i in {1..5}; doecho "Number: $i"
done# 遍历文件
for file in *.txt; doecho "File: $file"
done

3.循环 - while 循环

while 循环用于在条件为真的情况下重复执行一系列命令。基本语法如下:

while [ condition ]; do# 循环体
done

示例:

count=1
while [ $count -le 5 ]; doecho "Count: $count"((count++))
done

4.循环 - until 循环

until 循环与 while 循环类似,但在条件为假的情况下重复执行一系列命令。基本语法如下:

until [ condition ]; do# 循环体
done

示例:

count=1
until [ $count -gt 5 ]; doecho "Count: $count"((count++))
done

5.跳转语句 - breakcontinue

  • break:立即退出当前循环。
  • continue:跳过当前循环的剩余部分,并继续下一次迭代。

示例:

# 使用 break
for i in {1..10}; doif [ $i -eq 5 ]; thenbreakfiecho "Number: $i"
done# 使用 continue
for i in {1..10}; doif [ $((i % 2)) -eq 0 ]; thencontinuefiecho "Odd Number: $i"
done

6.案例语句 - case 语句

case 语句用于多分支选择,类似于其他语言中的 switch 语句。基本语法如下:

# case ... esac 为多选择语句,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case ... esac 语句,esac(就是 case 反过来)作为结束标记。可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case variable inpattern1)# 当 variable 匹配 pattern1 时执行的代码;;pattern2)# 当 variable 匹配 pattern2 时执行的代码;;*)# 默认情况;;
esac

示例:

fruit="apple"case $fruit in"apple")echo "It's an apple.";;"banana")echo "It's a banana.";;"orange")echo "It's an orange.";;*)echo "Unknown fruit.";;
esac
http://www.jsqmd.com/news/1361851/

相关文章:

  • VS Code Qt扩展1.12.0版本升级与开发效率提升
  • 爱回收报价透明吗?估价和到手价为何不同,一次讲清 - 滚动商讯
  • 家装常用的环保板材品牌有哪些:从环保等级到技术路线的全面科普与品牌盘点 - 科技焦点
  • RDMA无损网络中PFC配置实战与优化指南
  • 石家庄全区24小时电工上门维修,是不是真能到、收多少钱,这篇标准给你说透 - 天下观知
  • 提升用户留存率:使用introduction_screen优化首次体验
  • Kubernetes灰度发布实战:原理与最佳实践
  • 04-接上模型-获取API密钥并完成配置
  • 终极免费工具:5分钟学会使用Torrent File Editor创建和编辑种子文件
  • SQL Server 2022与SSMS安装配置全攻略
  • VERT文件转换架构深度解析:250+格式的本地WebAssembly实现机制
  • Rocky Linux 9上部署高可用Kubernetes集群指南
  • 无锡市滨湖区国内GEO服务商代理加盟靠谱推荐:源头厂商、区域保护与长期价值怎么判断? - 子柔传媒
  • Flutter+OpenHarmony手语学习App开发实践
  • 广州市从化区国内GEO服务商代理加盟靠谱推荐:本地团队怎么选对源头厂商与城市合伙人? - 子柔传媒
  • 8.Shell 函数
  • React Native在OpenHarmony开发屏幕尺子应用实践
  • Kubernetes持久化存储PV/PVC原理与实战指南
  • MySQL 8.4安装指南:从下载到配置全流程详解
  • 解锁Mac第三方鼠标侧键的终极方案:3步告别闲置按键
  • 达梦数据库分区键选择与执行计划优化实战
  • 1.PCM 基础
  • 如何用分布式数据管道重构企业数据架构:Apache SeaTunnel深度解析
  • 基于三菱PLC的知识竞赛抢答器4路抢答器设计1(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 平衡车电机控制的革命:开源场定向控制技术深度解析
  • 广州市南沙区国内GEO服务商代理加盟靠谱推荐:城市合伙人怎么判断源头厂商与区域保护? - 企业新闻快传
  • 买二手iPhone前别急着下单,爱回收和转转买二手手机哪个更靠谱,我用两次真实下单回答你 - 滚动商讯
  • Kubernetes存储管理:PV与PVC核心原理与实践指南
  • Flutter+OpenHarmony实现数独游戏撤销功能的技术方案
  • 3步免费实现Outlook日历联系人跨平台同步:终极完整指南