shell编程--if判断与for循环

shell编程与其他编程语言一样都有if判断与循环,今天了解一下if判断语句和for循环语句。

if判断语句讲解

我们写出一个if判断

a = 1
b = 2if [ "$a" -eq "$b" ]; thenecho "相等"
elseecho "不相等"
fi

在shell中-eq是表示相等。shell编程if语句有些特殊,其中大括号里面为条件语句,大括号后面要跟着分号,之后写关键字then。其中else表示对大括号里面的条件为假,fi结束。

那我们已经知道了基本的if语句结构,那同理我们写出if判断年龄的代码,如果年龄大于18就输出已成年,年龄小于18就输出未成年。代码如下:
 

age=18read -p "请输入您的年龄:" r_ageif [ "$r_age" -gt "$age" ] || [ "$r_age" -eq "$age" ]; then echo "已经成年"
elseecho "未成年"if

我们定义一个判断基准age变量并赋值18,之后写入输入语句,用-p选项输出一句提示句,并且把值赋给r_age变量,之后进行fi判断语句,如果输入的年龄大于18或者输入变量等于18就输出成年,否则输出未成年。其中-gt表示大于,||表示或者。

逻辑判断

讲解if语句就会涉及到逻辑判断,则是“并且”,“或者”,“非"。在shell中 &&表示并且,||表示或者,!=表示非。当然也有比较大小,-gt表大于,-lt表小于。

上述代码就运用到或运算符,根据不同需求进行修改,例如在上述代码中加入输入的变量不等于零。则在判断语句中增加非运算符,代码如下:
 

age=18
num=0
read -p "请输入您的年龄:" r_ageif [ "$r_age" -gt "$age" ] && [ "$r_age" != "$num" ] || [ "$r_age" -eq "$age" ]; then echo "已经成年"
elseecho "未成年"if

for循环语句

我们写出一个for循环

for i in 1 2 3 4 5; doecho "循环五次"
done 

我们写了一个for循环语句,i作为循环变量,in作为个关键字表示这个循环变量i在后面的循环列表,12345表示个列表,既循环次数。以do为开始done结束,中间为循环代码。

试想一下i变量会如何被赋值?

循环变量i通过in关键字进行第一次循环时,i会被复制为1,进行第二次循环时i会被赋值为2以此类推,直到i被赋值为5进行最后一次循环,当i已经为5时不会进行循环结束该段代码。

运行一下代码可观察循环变量num的变化:

for i in 1 2 3 4 5; doecho "数字有$i"
done

我们知道in后面跟着的是循环列表,那我们想循环一百次,一千次,一万次等等,我们不可能一个数字一个数字敲,这时候我们可以套用C语言结构。

shell编程for循环是支持C语言格式体,代码如下:

for ((i ; i <= 100 ; i++)); doecho "循环第$i次"
done

这里面我们用双层括号引用C语言格式代码,更方便对循环次数大的情况。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

半导体、晶体管、集成电路、芯片、CPU、单片机、单片机最小系统、单片机开发板-概念串联辨析

下面概念定义从小到大串联&#xff1a; 半导体&#xff08;semiconductor&#xff09;&#xff1a; 是一类常温下导电性能介于导体与绝缘体之间的材料&#xff0c;这种材料的导电性可以随着外部环境比如电压、温度、光照的变换而改变。常见的半导体材料有硅、锗、砷化镓等。 晶…

学习路之phpstudy--安装mysql5.7后在my.ini文件中无法修改sql_mode

windows环境下使用phpstudy安装mysql5.7后需要修改mysql中的sql_mode配置&#xff0c;但是在phpstudy中打开mysql配置文件my.ini后&#xff0c; 通过查找找不到sql_mode或sql-mode&#xff0c; 此时无法在my.ini文件中直接进行修改&#xff0c;可以使用mysql命令进行修改&#…

了解大模型:开启智能科技的新篇章

在当今科技飞速发展的时代,人工智能(AI)已经成为推动社会进步的重要力量。而在AI的众多技术分支中,大模型(Large Model)以其强大的数据处理能力和卓越的性能,正逐渐成为研究和应用的热点。本文旨在科普大模型的基本概念、与大数据的关系以及与人工智能的紧密联系,帮助读…

多目标粒子群优化(Multi-Objective Particle Swarm Optimization, MOPSO)算法

概述 多目标粒子群优化&#xff08;MOPSO&#xff09; 是粒子群优化&#xff08;PSO&#xff09;的一种扩展&#xff0c;用于解决具有多个目标函数的优化问题。MOPSO的目标是找到一组非支配解&#xff08;Pareto最优解&#xff09;&#xff0c;这些解在不同目标之间达到平衡。…

联想ThinkServer服务器主要硬件驱动下载

联想ThinkServer服务器主要硬件驱动下载&#xff1a; 联想ThinkServer服务器主要硬件Windows Server驱动下载https://newsupport.lenovo.com.cn/commonProblemsDetail.html?noteid156404#D50

亚马逊搜索关键词怎么写?

在亚马逊这个全球领先的电子商务平台&#xff0c;如何让自己的产品被更多的消费者发现&#xff0c;是每一个卖家都需要深入思考的问题。而搜索关键词&#xff0c;作为连接卖家与买家的桥梁&#xff0c;其重要性不言而喻。那么&#xff0c;如何撰写有效的亚马逊搜索关键词呢&…

Java从入门到放弃 之 泛型

Java从入门到放弃 - 泛型 引入泛型的背景怎么解决这个问题&#xff1f;解决方式一解决方式二 使用泛型代码案例一代码案例二 通配符的使用extends 通配符super 通配符对比extends和super通配符 泛型的原理 引入泛型的背景 在Java中当我们使用容器存储元素的时候&#xff08;建…

Flutter-Web首次加载时添加动画

前言 现在web上线后首次加载会很慢&#xff0c;要5秒以上&#xff0c;并且在加载的过程中界面是白屏。因此想在白屏的时候放一个加载动画 实现步骤 1.找到web/index.html文件 2.添加以下<style>标签内容到<head>标签中 <style>.loading {display: flex;…

动态规划子数组系列一>最长湍流子数组

1.题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public int maxTurbulenceSize(int[] arr) {int n arr.length;int[] f new int[n];int[] g new int[n];for(int i 0; i < n; i)f[i] g[i] 1;int ret 1;for(int i 1; i < n-1; i,m. l.kmddsfsdafsd){int…

win10 禁止更新

一、winR 输入 regedit 二、输入注册列表路径&#xff1a; &#xff08;1&#xff09;计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings &#xff08;2&#xff09;按照格式&#xff0c;创建文件命名: FlightSettingsMaxPauseDays &#xff08;3&…

【FAQ】HarmonyOS SDK 闭源开放能力 —ArkUI

1.问题描述&#xff1a; App启动的时候会有个弹框&#xff0c;询问用户是否需要进去隐私模式&#xff0c;在该隐私模式下&#xff0c;App不能获取任何用户信息。当前鸿蒙App级别是否有隐私模式&#xff1f; 解决方案&#xff1a; 当前实现隐私模式都是三方应用自己实现&…

传奇996_36——背包图标,物品位置问题

绑定位置不对位 CTRLF9背包物品文件&#xff0c;也就是bag_item文件夹的bag_item.lua文件&#xff0c;这个小框和大框的相对位置会影响那个绑定图标,就是背包物品组合的标签和下面子标签的相对位置 背包物品偏移到看不见 原因&#xff1a;CTRLF9背包物品文件&#xff0c;也就…

pyqt6、pyside6加载ui方法及路径总结

pyqt6、pyside6加载ui方法及路径总结 说明一、加载ui二、路径 说明 本教程适用于python3.11.X&#xff0c;pyqt6、pyside6.加载ui在一个项目中根目录及子目录的运用 一、加载ui pyqt6加载ui from PyQt6 import uic uic.loadUi(ui路径[str])#代码中添加加入这个代码就能加载…

springboot3如何集成knife4j 4.x版本及如何进行API注解

1. 什么是Knife4j knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案, 取名knife4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍!knife4j的前身是swagger-bootstrap-ui,swagger-bootstrap-ui自1.9.6版本后,正式更名为knife4j为了契合微服务的架构发展,由于原来…

中国电信星辰大模型:软件工厂与文生视频技术的深度解析

在科技日新月异的今天,人工智能(AI)技术正以惊人的速度改变着我们的生活和工作方式。作为这一领域的领军企业之一,中国电信凭借其强大的研发实力和深厚的技术积累,推出了星辰大模型,旨在为用户带来更加智能、高效、便捷的服务体验。本文将重点介绍中国电信星辰大模型中的…

机械设计学习资料

免费送大家学习资源&#xff0c;已整理好&#xff0c;仅供学习 下载网址&#xff1a; https://www.zzhlszk.com/?qZ02-%E6%9C%BA%E6%A2%B0%E8%AE%BE%E8%AE%A1%E8%A7%84%E8%8C%83SOP.zip

【大数据学习 | Spark-Core】RDD的概念与Spark任务的执行流程

1. RDD的设计背景 在实际应用中&#xff0c;存在许多迭代式计算&#xff0c;这些应用场景的共同之处是&#xff0c;不同计算阶段之间会重用中间结果&#xff0c;即一个阶段的输出结果会作为下一个阶段的输入。但是&#xff0c;目前的MapReduce框架都是把中间结果写入到HDFS中&…

Flume日志采集系统的部署,实现flume负载均衡,flume故障恢复

目录 安装包 flume的部署 负载均衡测试 故障恢复 安装包 在这里给大家准备好了flume的安装包 通过网盘分享的文件&#xff1a;apache-flume-1.9.0-bin.tar.gz 链接: https://pan.baidu.com/s/1DXMA4PxdDtUQeMB4J62xoQ 提取码: euz7 --来自百度网盘超级会员v4的分享 ----…

centos7 安装helm v3

文章目录 1. 安装 Helm v3步骤 1&#xff1a;下载 Helm 安装包步骤 2&#xff1a;解压安装包步骤 3&#xff1a;将 Helm 移动到 /usr/local/bin步骤 4&#xff1a;验证安装 2. 使用 Helm 配置 Kubernetes步骤 1&#xff1a;安装并配置 kubectl步骤 2&#xff1a;初始化 Helm步骤…

Hive基础面试-如何理解复用率的

1. 模型的复用率你们是怎么做的&#xff1f; 简单直白的说就是你的模型复用率如何&#xff0c;在业务方是否认可该模型&#xff0c;也是衡量模型建设的一个标准&#xff0c;复用率数&#xff1a;数仓模型涉及的核心是追求模型的复用和共享&#xff0c;引用系数越高&#xff0c;…