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

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.lryc.cn/news/490363.html

相关文章:

  • Makefile基础应用
  • 计算机网络基础全攻略:探秘网络构建块(1/10)
  • SpringMVC-Day1
  • 【虚拟机】VMWare的CentOS虚拟机断电或强制关机出现问题
  • 探索 RocketMQ:企业级消息中间件的选择与应用
  • vue中v-if和v-for优先级
  • 使用Kotlin写一个将字符串加密成short数组,然后可以解密还原成原始的字符串的功能
  • windows C#-取消任务列表(上)
  • Linux---ps命令
  • 解决k8s拉取私有镜像401 Unauthorized 问题
  • Ruby 模块(Module)
  • HAL库的简单介绍以及环境搭建
  • 如何在 PyCharm 中配置 HTTP 代理以确保网络连接的顺畅性
  • PHP 8.4 重磅发布了
  • LVM缩容
  • Next.js 独立开发教程(三):CSS 样式的完整指南
  • React (三)
  • Python数据结构之链表
  • “LLM是否是泡沫”
  • 基于机器学习的人脸识别算法matlab仿真,对比GRNN,PNN,DNN以及BP四种网络
  • 算法(Algorithm)
  • C语言中const char *字符进行切割实现
  • 【UE5】在材质中计算模型在屏幕上的比例
  • 前端速通(HTML)
  • 订单日记为“惠采科技”提供全方位的进销存管理支持
  • Linux:文件管理(一)
  • 鸿蒙多线程开发——线程间数据通信对象03(sendable)
  • linux从0到1——shell编程7
  • 自主研发,基于PHP+ vue2+element+ laravel8+ mysql5.7+ vscode开发的不良事件管理系统源码,不良事件管理系统源码
  • 【海思Hi3519DV500】双目网络相机套板硬件规划方案