shell的控制语句(3)

2023-05-16

 shell脚本与我们所用的c语言控制语句,是存在一些差异的,因此,我们需要重新认识并且学会它们。因此,接下来,我会介绍常用的流程控制语句 。如:if   for 、while、 case 、 until等等

一、if条件判断语句

if条件判断语句,分为三类,一类单分支if、一类双分支if、最后一类多分支if

1.1、单分支if

if [ 条件1 ];then          // 中括号里的两边必须空格, 当then与中括号同一行,必须用;分号隔开
	
   执行第一段程序
fi


另外一种写法(then与中括号不是同一行)

if [ 条件1 ]
then

  执行第一段程序
fi

简单的打分功能例子:当a的分数大于 60分时,输出  已及格 

注意: if也需要与中括号空一格 如   if  【   】

输出结果

 

1.2、双分支if

if [ 条件1 ]
	then
		条件成立时,执行这段程序
	else
		条件不成立时,执行这段程序
fi

简单的打分功能例子:当a的分数大于 60分时,输出  已及格   否则   不及格

注意:在shell1脚本,不建议用  >  >=   <  <=      而需要用 shell专属的   -gt   -eq    -lt     -le   等 

否则容易运行出错误。

输出结果:

 1.3、多分支if

if [ 条件1 ]
then
		当条件判断式1成立时,执行程序1
elif [ 条件2 ]
then
		当条件判断式2成立时,执行程序2
。。。。。。。。。
else
	当所有条件都不成立时,执行此程序
fi

例子:当a的成绩【60,70)--及格,【70,80)--B     【80,90)--A     【90,99)--A+ 低于60 —不及格

 

注意:不可用  &&   ,因为我一开始就是用&& ,报错了,改为用 -a   就成功 

输出结果

 二、case控制语句

case  $变量名称  in

 “第一个变量内容”) 
        程序段一              #不用加;分号
 ;;                           #  ;; 相当于break;
 “第二个变量内容”) 
        程序段二
 ;; 

 *) 
     其它程序段
 ;; 
 esac 

 对比c语言switch控制语句

 例子:当a的成绩【60,70)--及格,【70,80)--C    【80,90)--B     【90,99)--A   低于60 —不及格

 输出结果

 三、for循环语句

       shell的 for循环存在两种形式

3.1、第一种for形式

      与第二种相比,在shell脚本中使用较少,第二种较多

for ((初始值;循环控制条件;变量变化))    #两个括号
do
		程序              #不用加分号;结尾
done

与c语言的for循环语句不同点

 简单例子:1~100的相加运算

输出结果

 

 3.2、第二种for形式

for var in con1 con2 con3 ...
do
        程序段
done

第一次循环时,$var 的内容为 con1
第二次循环时,$var 的内容为 con2
第三次循环时,$var 的内容为 con3
......

例子:求无顺序加法运算:1 +  3  +   5  +    9  +    15    +    455  =  488

分析:第一次循环,num=1  ,第二次循环  num=3   第三次循环  num=5  直到num=455  停止 

输出结果

例子2:使用shell脚本,测试当前位置下,即 ls 下文件 是目录,还是普通文件

分析: `ls`,此功能,获取当前位置的文件信息,接着按顺序从第一个文件开始到最后一个文件

依次传给name 判断相应文件的属性

输出结果

 四、while控制语句

while [ condition ]          #有三处需要   空格
do 
      程序段
done

 例子:

 当输入 num=5 ,时,执行无限循环打印hello world

五、unitl 控制语句

until [ condition ]
do
      程序段
done

例子:

 结果输入num=5

 分析:当满足条件时,不会执行do  ---done  里面的内容,与while相反

六、break 与 continue

6.1、break

              break 命令允许跳出循环。
              break 通常在进行一些处理后退出循环或 case 语句

例子:当i = 3时,退出for循环


输出结果

 

6.2、continue

              continue 命令类似于 break 命令
              只有一点重要差别,它不会跳出循环,只是跳过这次循环步骤,接着运行下一次循环

例子:当i=3时,跳过此次循环,进行下一次循环

 输出结果

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell的控制语句(3) 的相关文章

  • 如何将文件中的值分配给 UNIX sh shell 中的变量?

    我一直在搜索这个网站 试图找到这个问题的答案 并发现了几个非常好的答案 不幸的是 它们都不适合我 这是我正在使用的脚本 VALUE cat szpfxct tmp export VALUE echo gt gt LGFILE echo te
  • 退出 bash 脚本但保持进程运行

    我正在运行服务器 需要使用参数执行以下命令 这些脚本目前工作得很好 但问题是当我运行脚本时我无法返回到控制台 它在控制台中保持运行 如果我强行停止它 那么该过程也会停止 我想继续运行该进程并返回到控制台 bin sh php home st
  • 通过 SSH 将变量传递给远程脚本

    我正在通过 SSH 从本地服务器在远程服务器上运行脚本 首先使用 SCP 复制该脚本 然后在传递一些参数时调用该脚本 如下所示 scp path to script server example org another path ssh s
  • 使用 Jenkins 运行 ios-sim

    我正在尝试使用以下命令从命令行启动我的应用程序ios sim https github com downloads pegli ios sim ios sim xcode4 3 tar gz但这就是我得到的 Started by user
  • 从 bash 脚本运行节点

    很简单 我正在尝试使用 cron 自动运行 nodejs 脚本 但是脚本本身似乎无法运行该文件 我的脚本很简单 usr bin env node node var node assets js update js 但是 在运行此命令时 它返
  • 在 shell 脚本中查找和替换

    是否可以使用 shell 在文件中搜索然后替换值 当我安装服务时 我希望能够在配置文件中搜索变量 然后在该值中替换 插入我自己的设置 当然 您可以使用 sed 或 awk 来完成此操作 sed 示例 sed i s Andrew James
  • 如何调用位于其他目录的Makefile?

    我正在尝试这样做 我想打电话给 make Makefile存在于其他目录中 abc可以使用位于不同目录中的 shell 脚本的路径 我该怎么做呢 由于 shell 脚本不允许我cd进入Makefile目录并执行make 我怎样才能编写she
  • 如何通过 shell 脚本确定网页是否存在?

    我正在尝试制作一个程序 可以将一系列漫画扫描转换为一个 pdf 文件 并且我不想尝试下载图片来确定我是否有正确的网址 是否有一个 shell 脚本命令可以用来检查网页是否存在 在 NIX 下 您可以使用curl发出一个简单的HEAD要求 H
  • 如何将 bash 脚本的整个输出保存到文件

    我正在尝试将 bash 脚本的整个输出保存到文件中 我目前在代码开头有一个参数 ip 地址 如下所示 bin bash USAGE Usage 0
  • 如何使用 bash 显示具有两个子文件夹的文件夹?

    我通过 Cygwin 使用 bash 我有一个大文件夹 a 有很多子文件夹 b 这些子文件夹各有一个或两个子文件夹 c 我想找到所有有两个子文件夹 c 的子文件夹 b 并输出它们 结构如下 a b1 c1 b2 c1 c2 b3 c1 c2
  • awk: hping: 打印 icmp 发起/接收之间的差异

    我有以下输出hping http ports su net hping在 OpenBSD 上 hping icmp ts www openbsd org HPING www openbsd org re0 129 128 5 194 icm
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • ReferenceError:MongoDB shell 中未定义 require

    我尝试通过 Windows 命令 Windows 8 1 从 Mongo 客户端连接 MongoDB 当我使用require 在 javascript 中 我遇到如下错误 有人有同样的问题吗 我有错过任何一个吗require有关的npm安装
  • 有一种简单的方法可以忽略时间戳来区分日志文件吗?

    我需要比较两个日志文件 但忽略每行的时间戳部分 确切地说是前 12 个字符 有没有一个好的工具 或者一个聪明的 awk 命令 可以帮助我 根据您使用的 shell 您可以改变方法 Blair https stackoverflow com
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • 在 bash 中使用单个命令为 shell 变量分配默认值

    我对 bash 3 00 shell 脚本中的变量进行了大量测试 如果未设置变量 则它会分配默认值 例如 if z VARIABLE then FOO default else FOO VARIABLE fi 我似乎记得有一些语法可以在一行
  • 如何在 shell 脚本中操作 $PATH 元素?

    有没有一种惯用的方法从类似 PATH 的 shell 变量中删除元素 这就是我想要的 PATH home joe bin usr local bin usr bin bin path to app bin and remove or rep
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug

随机推荐

  • PCA9685如何通过iic协议控制多个舵机

    iic协议 即I2C xff0c 一种总线结构 能够有效减少芯片管脚和线路连接的数量 例如 内存中的SPD信息 通过IIC xff0c 与BX芯片组联系 xff0c IIC 存在于英特尔PIIX4结构体系中 随着大规模集成电路技术的发展 x
  • 无人机电池模块

    3 电池模块 xff1a 1 xff1a 电池的多少mah什么意思 xff1f 表示电池容量 xff0c 如5200mah电池 xff0c 表示以5 2A的电流放电 xff0c 可持续放电1小时 但是 xff0c 实际的放电时间还是要参考厂
  • 每日漏洞 | 跨站请求伪造

    01 漏洞描述 HTTP的无状态性 xff0c 导致Web应用程序必须使用会话机制来识别用户 一旦与Web站点建立连接 访问 登录 xff0c 用户通常会分配到一个Cookie xff0c 随后的请求 xff0c 都会带上这个Cookie
  • 每日漏洞 | rsync未授权访问

    01 漏洞描述 rsync是Linux Unix下的一个远程数据同步工具 xff0c 可通过LAN WAN快速同步多台主机间的文件和目录 xff0c 默认运行在873端口 由于配置不当 xff0c 导致任何人可未授权访问rsync xff0
  • 每日漏洞 | 不安全的HTTP方法

    01 漏洞描述 HTTP HTTP报文 中介绍了HTTP的请求方法 在这些方法中 xff0c HTTP定义了一组被称为安全方法的方法 xff1a GET HEAD OPTIONS TRACE xff0c 这些方法不会产生什么动作 xff0c
  • 每日漏洞 | Host头攻击

    01 漏洞描述 HTTP HTTP报文 最后一节 xff0c 简单的介绍了一下首部字段 xff0c 其中就包含了Host首部字段 为了方便获取网站域名 xff0c 开发人员一般依赖于请求包中的Host首部字段 例如 xff0c 在php里用
  • 每日漏洞 | HTTP.sys远程代码执行

    01 漏洞描述 上篇文章介绍了Host头攻击 xff0c 今天我们讲一讲HTTP sys远程代码执行漏洞 HTTP sys是Microsoft Windows处理HTTP请求的内核驱动程序 xff0c 为了优化IIS服务器性能 xff0c
  • miivii域控制器(Xavier)实现TensorRT加速后的Ultra-Fast-Lane-Detection项目

    TRT ONNX2是神力模型转换工具链 鸡汤哥知乎金天 一 配置TRT ONNX2 1 安装依赖 xff08 2020 09 30更新 xff09 昨天刷了JetPack4 4 xff0c 很好用 xff01 只需要下载编译thor即可 x
  • 每日漏洞 | CRLF注入

    01 漏洞描述 在 HTTP HTTP报文 一文中 xff0c 我们介绍了HTTP报文的结构 xff1a 状态行和首部中的每行以CRLF结束 xff0c 首部与主体之间由一空行分隔 或者理解为首部最后一个字段有两个CRLF xff0c 首部
  • PTES-情报搜集

    01 概述 在 PTES 渗透测试执行标准 中介绍了渗透测试的一般流程 xff0c 其中简要介绍了情报搜集的目标 情报搜集的目标是尽可能多的收集渗透对象的信息 网络拓扑 系统配置 安全防御措施等 xff0c 在此阶段收集的信息越多 xff0
  • 每日命令 | ls

    01 每日命令系列导语 安全行业 xff0c 接触Linux不可避免 今天我们开启Linux学习之旅 一直在构思Linux系列文章该怎么排版 xff0c 最终决定采用每日命令的形式 xff0c 毕竟Linux有大量的命令需要学习 每日命令系
  • c51单片机(预备知识)

    1 什么是单片机 单片机又称单片微控制器 它不是完成某一个逻辑功能的芯片 而是把一个计算机系统集成到一个芯片上 相当于一个微型的计算机 xff0c 和计算机相比 xff0c 单片机只缺少了I O设备 xff08 小键盘 LED显示器 xff
  • 一级指针和二级指针的传参问题(学习笔记)

    一 指针 一级指针 xff1a 是一个指针变量 xff0c 指向一个普通变量 xff0c 并保存该普通变量的地址 二级指针 xff1a 是一个指针变量 xff0c 指向一个一级指针 xff0c 并保存该一级指针的地址 二 一级指针的引用 2
  • UDP广播的实现

    一 广播的概念 广播 xff1a 由一台主机向该主机所在子网内的所有主机发送数据的方式 任何一个网段最后一个地址就是广播的地址 例如 xff1a 192 168 5 103主机发送广播信息 xff0c 那么 xff0c 广播地址为192 1
  • 必备模块知识——继电器

    一 继电器的概念 1 1 什么是继电器 继电器是一种电控制器件 xff0c 是当输入量的变化达到规定要求时 xff0c 在电气输出电路中使被控量发生预定的阶跃变化的一种电器 继电器具有控制系统和被控制系统 xff0c 通常应用于自动化的控制
  • 必备模块知识——超声波传感器

    一 超声波传感器 1 什么是超声波 人们能听到声音是由于物体振动产生的 xff0c 它的频率在20HZ 20KHZ范围内 xff0c 超过20KHZ称为超声波 xff0c 低于20HZ的称为次声波 常用的超声波频率为几十KHZ 几十MHZ
  • typedef的用法——c语言

    一 ypedef 1 1 xff1a typedef的用法 xff08 如上图所示 xff09 typedef 用法一句话总结 把定义的类型改名 举个例子 xff1a 我们熟悉的int类型 定义一个变量 xff0c 如int a xff1b
  • shell的测试语句

    一 shell的条件测试语句 在写shell脚本时 xff0c 经常遇到的问题就是判断字符串是否相等 xff0c 可能还要检查文件状态或进 行数字测试 xff0c 只有这些测试完成才能做下一步动作 1 1 shell脚本中的条件测试如下 x
  • 在miivii域控制器(基于Xavier)上复现Ultra-Fast-Lane-Detection源论文项目

    源项目链接 一 安装 参考源项目安装教程 xff0c 个别步骤有改动 xff1a 1 我没有安装Anaconda xff0c 所以跳过步骤2 2 步骤3中安装pythorch torchvision的血泪史 xff1a 网上看了很多下载py
  • shell的控制语句(3)

    shell脚本与我们所用的c语言控制语句 xff0c 是存在一些差异的 xff0c 因此 xff0c 我们需要重新认识并且学会它们 因此 xff0c 接下来 xff0c 我会介绍常用的流程控制语句 如 xff1a if for while