首页 > 系统相关 >shell编程--if判断与for循环

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

时间:2024-11-24 17:30:26浏览次数:11  
标签:语句 shell -- 18 age 编程 echo 循环 代码

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

if判断语句讲解

我们写出一个if判断

a = 1
b = 2

if [ "$a" -eq "$b" ]; then

    echo "相等"
else
    echo "不相等"
fi

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

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

age=18

read -p "请输入您的年龄:" r_age

if [ "$r_age" -gt "$age" ] || [ "$r_age" -eq "$age" ]; then 
    echo "已经成年"
else
    echo "未成年"

if

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

逻辑判断

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

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

age=18
num=0
read -p "请输入您的年龄:" r_age

if [ "$r_age" -gt "$age" ] && [ "$r_age" != "$num" ] || [ "$r_age" -eq "$age" ]; then 
    echo "已经成年"
else
    echo "未成年"

if

for循环语句

我们写出一个for循环

for i in 1 2 3 4 5; do
    echo "循环五次"
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; do
    echo "数字有$i"
done

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

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

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

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

标签:语句,shell,--,18,age,编程,echo,循环,代码
From: https://blog.csdn.net/weixin_45476967/article/details/143984770

相关文章

  • shell编程-for循环与while循环
    接续上节讲述for循环以及接下介绍while循环seq数字数列for循环如果想要循环次数变多的情况,手动建设循环列表是不可行的,可以引用C语言框架,当然也可以使用seq构造数列。例如构造1-10的循环数列,我们让其循环10次。fornumin$(seq10);doecho"循环次数为$num"done上......
  • 基于springboot的绿城郑州爱心公益网站设计与实现
    文章目录详细视频演示项目介绍技术介绍功能介绍核心代码系统效果图详细视频演示文章底部名片,获取项目的完整演示视频,免费解答技术疑问项目介绍  传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据......
  • 2024年11月24日Github流行趋势
    项目名称:FreeCAD项目维护者:@wwmayer,@yorikvanhavre,@berndhahnebach,@chennes,@WandererFan等项目介绍:FreeCAD是一个免费且开源的多平台3D参数化建模工具。项目star数:20,875项目fork数:4,117项目名称:screenshot-to-code项目维护者:@abi,@clean99,@sweep-ai,@kach......
  • Playwright进行异步爬取案例
    1.代码功能概述该代码使用Playwright异步库编写,用于抓取一个目标网站的数据。主要任务包括:加载网页:访问指定页面并等待加载完成。解析网页内容:提取数据如标题、封面图片、分类、评分、简介等。存储数据:将抓取到的数据以特定格式保存到本地文件中。2.代码结构解析1.......
  • 【工具使用】【Shell脚本】【gitlab】下拉所有的仓库以及每个仓库的所有分支代码
    1 前言关于Gitlab我们之前看过【工具使用】【Shell脚本】【gitlab】下拉所有的仓库代码并指定分支推送给客户仓库、【工具使用】【Shell脚本】【gitlab】【最终篇】获取当前用户页面上可以看到的所有仓库代码以及拉推新仓库。前面两篇都是拉的某几个分支,本节我们看看,怎么把所......
  • 11.23 周六
    codeforcesQ1.1200将一个序列分为若干集合,每个集合的和在一个区间内,问集合数量的最大值。Q2.1400长度为n的数组产生n-2个相邻三元组,问恰有1个元素不同的三元组的配对数。Q3.1500给定n个数组,设f(x)=max{任意次将x放入任意数组:x=mex{x,a[i]}},问f(0)+...+f(m)。(m<=1e9)A1.前......
  • 搜索
    搜索有一个lq暴论:会搜索就能拿省一。其实也没什么问题,但是搜索掌握的太差了,目前还是只会回溯法和一点点的迭代加深。回溯这个是搜索最基本的操作了,应该不需要赘述。折半搜索当一个搜索树的深度足够深,我们就会花上\(dep\)的指数级代价。但是当我们的始末态明确的时候,我们可......
  • CF799E Aquarium decoration
    我们将物品分成\(4\)个集合:集合\(A\)包含只有Arkady喜欢的装饰。集合\(B\)包含只有Masha喜欢的装饰。集合\(C\)包含二人都喜欢的装饰。集合\(D\)包含没人喜欢的装饰。分别记这\(4\)个集合的大小为\(a,b,c,d\)。我们可以先将这\(4\)个集合分别按照花费......
  • 移动硬盘不识别是什么原因导致的该怎么处理
    移动硬盘无法被识别是一个相对常见的问题,可能由多种原因导致。以下是一些常见的原因及其相应的处理方法:一、硬件连接问题接口损坏:移动硬盘或电脑的USB接口可能因频繁插拔而磨损,导致接触不良。解决方法:检查接口是否完好,尝试更换接口或使用其他数据线连接。数据线问题:数据线可......
  • 实验4
    实验任务二代码GradeCalc.hpp1#include<iostream>2#include<vector>3#include<string>4#include<algorithm>5#include<numeric>6#include<iomanip>78usingstd::vector;9usingstd::string;10u......