Shell 循环语句:重复任务的自动化利器

简介: 在Shell脚本中,循环语句如`while`和`for`是自动化任务的关键。`while`循环在条件满足时执行,例如计算1到100的和;`for-in`循环遍历列表,可用于迭代指定数值或命令输出,如求1到100的和。`select-in`循环提供交互式菜单,增强脚本用户体验。理解并运用这些循环能提升脚本效率和可读性。现在,动手试试吧!

在日复一日的脚本编程中,循环语句无疑是我们最好的朋友。通过循环,我们可以执行重复的任务,无论是遍历文件列表,处理文本数据,还是简单的数学运算。

今天,我们就来聊聊 shell 脚本中的几种循环语句,它们将如何帮助我们简化编程任务。

while 循环:当条件满足时循环

while 循环非常有用,基本语法是当条件为真(即返回值为 0)时,就执行循环体内的语句。使用它可以执行诸如从 1 加到 100 这样简单但有趣的任务。

例子:实现 1 到 100 的求和

#!/bin/bash

i=1
sum=0

while ((i <= 100))
do
  ((sum += i))
  ((i++))
done

echo "The sum is ===> $sum"
# 输出:The sum is ===> 5050

例子:实现一个简单的加法计算器

#!/bin/bash

sum=0

echo '输入数字,进行加法计算(按住 Ctrl + D 组合键获取结果)'

while read n
do
  ((sum += n))
done

echo "The sum is ====> $sum"

在这两个例子中,我们可以看到 while 循环如何在满足条件的情况下反复执行,直到条件不再成立。特别是在第二个例子中,我们利用了 read 命令读取用户输入,这在脚本交互中非常常见。

for-in 循环:遍历列表元素

for-in 循环的用法与 Python 中的非常相似,用于遍历列表中的每个元素。这种方式编写的代码可读性强,易于理解。

直接给出具体的值作为列表

#!/bin/bash

sum=0

for n in 1 2 3 4 5 6
do
  echo $n
  ((sum += n))
done

echo 'The sum is '$sum
# 输出分别为 1 2 3 4 5 6 和 The sum is 21

给出一个取值范围作为列表

#!/bin/bash

sum=0
for n in {
   1..100}
do
  ((sum += n))
done

echo "The result is ${sum}"
# 输出:The result is 5050

使用命令的执行结果作为列表

#!/bin/bash

for filename in $(ls *.sh)
do
  echo "当前目录下所有的以 .sh 为后缀的文件为 ==> ${filename}"
done

在这些示例中,我们看到 for-in 循环如何通过直接列出元素、指定范囹、甚至使用命令的输出作为列表来实现强大的遍历功能。

select-in 循环:增强脚本交互性

select-in 循环是脚本中用于交互的强大工具,它会显示一个带编号的菜单,用户通过输入编号来进行选择,进而执行不同的功能。

#!/bin/bash

echo '你喜欢哪种运动?'

select sport in '足球' '篮球' '乒乓球' '看电视'
do
  echo "你选择了 $sport"
  break # 加上 break 退出循环
done

通过 select-in 循环,我们可以轻松地构建用户友好的菜单系统,使得脚本的交互性大大增强。

在编写 shell 脚本时,正确选择循环类型对于提高代码的可读性和可维护性非常重要。

通过这篇文章的介绍,相信你已经对三种不同的循环有了初步的了解,并能够在实际编程中灵活应用它们。接下来,就是在你自己的脚本项目中实践和探索的时候了!

相关文章
|
1月前
|
人工智能 数据可视化 数据挖掘
团队日报不用愁!自动化生成工具亲测:任务进度实时同步
本文深入分析了传统手动日报在数据孤岛、格式混乱和时效性差三大痛点,并探讨了自动化日报带来的效率提升、决策优化等四大核心价值。通过对板栗看板、SmartBrief、n8n 等六款主流工具的功能、适用场景及实战效果进行测评,为企业提供科学的选型建议与实施路径。
团队日报不用愁!自动化生成工具亲测:任务进度实时同步
|
6月前
|
存储 人工智能 API
OWL:告别繁琐任务!开源多智能体系统实现自动化协作,效率提升10倍
OWL 是基于 CAMEL-AI 框架开发的多智能体协作系统,通过智能体之间的动态交互实现高效的任务自动化,支持角色分配、任务分解和记忆功能,适用于代码生成、文档撰写、数据分析等多种场景。
1440 13
OWL:告别繁琐任务!开源多智能体系统实现自动化协作,效率提升10倍
|
6月前
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
8月前
|
人工智能
LangGraph:构建多代理动态工作流的开源框架,支持人工干预、循环、持久性等复杂工作流自动化
LangGraph 是一个基于图结构的开源框架,专为构建状态化、多代理系统设计,支持循环、持久性和人工干预,适用于复杂的工作流自动化。
1117 12
LangGraph:构建多代理动态工作流的开源框架,支持人工干预、循环、持久性等复杂工作流自动化
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务
CogAgent-9B 是智谱AI基于 GLM-4V-9B 训练的专用Agent任务模型,支持高分辨率图像处理和双语交互,能够预测并执行GUI操作,广泛应用于自动化任务。
306 12
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务
|
9月前
|
人工智能 Linux API
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
PromptWizard 是微软开源的 AI 提示词自动化优化框架,通过自我演变和自我适应机制,迭代优化提示指令和上下文示例,提升大型语言模型(LLMs)在特定任务中的表现。本文详细介绍了 PromptWizard 的主要功能、技术原理以及如何运行该框架。
750 8
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
|
8月前
|
存储 安全 数据可视化
用Python实现简单的任务自动化
本文介绍如何使用Python实现任务自动化,提高效率和准确性。通过三个实用案例展示:1. 使用`smtplib`和`schedule`库自动发送邮件提醒;2. 利用`shutil`和`os`库自动备份文件;3. 借助`requests`库自动下载网页内容。每个案例包含详细代码和解释,并附带注意事项。掌握这些技能有助于个人和企业优化流程、节约成本。
295 3
|
10月前
|
运维 Ubuntu Linux
自动化运维:使用Ansible简化日常任务
在快节奏的IT世界中,时间就是一切。本文将揭示如何通过Ansible这一强大的自动化工具来节省宝贵的时间,从而提高效率和减少人为错误。我们将深入探讨Ansible的核心概念、安装过程以及如何编写简单的playbook来自动执行常见运维任务。无论你是新手还是有经验的系统管理员,这篇文章都将为你提供实用的知识和技能,让你能够更好地控制你的服务器环境。
|
10月前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。
|
10月前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
373 3

热门文章

最新文章