shell 脚本循环语句

目录

循环

echo 命令

for 循环次数

for 第二种格式

命令举例

while

脚本举例

双重循环及跳出循环

脚本举例

更改文件和目录的后缀名的脚本

画三角形的脚本

乘法口诀表的脚本

面试例题

补充命令

let 命令


循环

—— 一定要有跳出循环的条件

  1. 已知循环的次数

  2. 未知循环的次数,但是有一个跳出的条件

echo 命令

—— echo -n 表示不换行输出

—— echo -e 表示输出转义符

转义符号作用
-n表示不换行输出
\e输出转义字符,将转义后的内容输出到屏幕上
\b转义后相当于按退格键,但前提是 b 后面存在字符;b 表示删除前一个字符,\b\b 表示删除前两个字符
\c不换行输出,当 \c 后面存在字符时,后面的字符不会被输出
\n换行,被输出的字符从 \n 除开始另起一行
\f 或 \v换行,但是换行后的新行的开头位置连接着上一行的行尾
\t转以后表示插入 tab,即横向制表符
\r光标移至行首,用后面的字符覆盖等长度的前面的字符

for 循环次数

—— for 名称 in 循环列表

do命令

done

—— 循环列表

  • 只和循环的额外次数有关

  • 有几个值,就循环几次

例
for i in a b c #for 变量名 in 循环列表
#i 为自定义,in 后面接列表循环次数,a b c 表示循环 3次
do
命令序列
done循环列表的表项形式[root@localhost opt]# echo {1..10}  
1 2 3 4 5 6 7 8 9 10
#将数字 1至10 全部列出
[root@localhost opt]# echo {0..10..2}
0 2 4 6 8 10
#将数字 0至10 中的偶数全部列出;从 0 开始到 10 结束,每次加 2,步长为 2
[root@localhost opt]# echo {1..10..2}
1 3 5 7 9
#将数字 0至10 中的奇数全部列出;从 0 开始到 10 结束,每次加 2,步长为 2seq #调用命令
[root@localhost opt]# seq 5 
1
2
3
4
5
[root@localhost opt]# seq 0 5
0
1
2
3
4
5
[root@localhost opt]# seq 0 2 5
0
2
4
[root@localhost opt]# seq 1 2 5
1
3
5

for 第二种格式

for ((表达式1;表达式2;表达式3)) ; do 命令 ; done

—— 表达式1 ==> 表达式2:是一个判断,如果满足表达式2 才执行 ==> 表达式3

命令举例

[root@localhost ~]# ls
anaconda-ks.cfg       公共  视频  文档  音乐
initial-setup-ks.cfg  模板  图片  下载  桌面
[root@localhost ~]# for a in * ;do echo $a ;done
anaconda-ks.cfg
initial-setup-ks.cfg
公共
模板
视频
图片
文档
下载
音乐
桌面计算 1累计加到100 的结果
写法一
[root@localhost ~]# sum=0;a=0;for a in {1..100};do let sum+=a ;done;echo $sum
5050写法二
[root@localhost ~]# sum=0;a=0;for a in {1..100};do sum=$[sum+a] ;done;echo $sum
5050

while

—— 为限定条件,条件则成功执行

—— while 判断条件:条件成立则继续循环,条件不成立跳出循环

脚本举例
累加求和#!/bin/bash
a=0
b=0
until [ $a -gt 100 ]
#当 a的值并不大于100 时,因为条件不成立,所以继续循环执行,当 a的值大于100,满足条件,则跳出循环
do
b=$[a+b]
let a++
done
echo b=$b

双重循环及跳出循环

命令注释
break跳出单个循环;break n :数字 n ,代表跳出 n 层循环
continue终止某次循环中的命令,但是不会完全终止命令;continue n :数字 n ,代表跳出 n 层循环
exit直接退出脚本
例
#!/bin/bash
for j in {1..6}
doif [ $j -eq 3 ]thenbreakfiecho j=$j
done#执行的结果
[root@localhost opt]# bash l.sh #在 j=3 的时候停止该循环命令
j=1
j=2#!/bin/bash
for j in {1..6}
doif [ $j -eq 3 ]#当j的值等于3时thencontinue#终止此次循环,但是,不会影响循环命令的后续执行fiecho j=$j
done#执行的结果
[root@localhost opt]# bash l.sh  #没有显示 j=3 
j=1
j=2
j=4
j=5
j=6

脚本举例

更改文件和目录的后缀名的脚本

#!/bin/bash
for a in *.txt
#给a赋值任意字符加后缀名.txt
do
b=`echo $a|cut -d "." -f1`
#给b赋值,输出a 以 . 为分隔符,取后一列
mv $a ${b}.sh
#将a 的后缀名 .txt 更改为 .sh
done
画三角形的脚本

#!/bin/bashfor a in {1..9}
dofor b in `seq $a`doecho -e "*\c"done
echo
done

结果展示

乘法口诀表的脚本

#!/bin/bash
for a in {1..9}
dofor b in `seq $a`doecho -e "${a}*${b}=$[a*b]\t\c "done
echo
done

结果展示

面试例题

#!/bin/bash
ip=192.168.91.
for a in {1..254}
do
{
ping -c1 -W1 ${ip}${a}  &>/dev/null
if [ $? -eq 0 ]
then
echo ${ip}${a}  >> /opt/cunhuo
else
echo ${ip}${a}  >> /opt/nocunhuo
fi
} &
done

补充命令

let 命令
符号作用
++自身变量 +1
--自身变量 -1
+=任意数值自身变量 +任意数值
-=任意数值自身变量 -任意数值
*=任意数值自身变量 *任意数值
/=任意数值自身变量 /任意数值
%=任意数值自身变量 %任意数值

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

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

相关文章

NFC:应用场景广泛的短距离通信技术

NFC:应用场景广泛的短距离通信技术 一、NFC 技术介绍1.1 NFC 技术应用场景1.2 NFC 技术优点1.3 NFC 工作原理 二、NFC 开发2.1 NFC 应用开发流程2.2 NFC 读取和写入2.3 NFC 读写功能示例 三、总结 一、NFC 技术介绍 NFC (Near-field communication&…

Redis面试内容,Redis过期策略,Redis持久化方式,缓存穿透、缓存击穿和缓存雪崩,以及解决办法

文章目录 一、redis什么是RedisRedis使用场景1、缓存2、数据共享[分布式](https://so.csdn.net/so/search?q分布式&spm1001.2101.3001.7020)3、分布式锁4、全局ID5、计数器6、限流7、位统计 Redis有5中数据类型: SSHLZRedis中一个key的值每天12点过期&#xff…

Leetcode——169 多数元素

我的答案 class Solution {public int majorityElement(int[] nums) {int len nums.length;Arrays.sort(nums);int count 1;int res 0;if(len 1){return nums[0];}for(int i0; i<len-1; i){if(nums[i]nums[i1]){count;}else{count 1;}if(count>len/2){res nums[i]…

【python】python旅游网数据抓取分析(源码+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

逻辑漏洞(业务逻辑)dami CMS

逻辑漏洞&#xff08;业务支付逻辑漏洞&#xff09;dami CMS 0x01 业务逻辑简介 业务逻辑指的是一个系统或应用程序中的实际业务规则和流程。它描述了如何处理特定的业务需求、数据和操作。业务逻辑通常是根据特定行业或组织的需求而设计的。 在软件开发中&#xff0c;业务逻…

transformer之KV Cache

一、为什么要研究KV Cache 非常有效的加速推理速度&#xff0c;效果如下所示&#xff1a; import numpy as np import time import torch from transformers import AutoModelForCausalLM, AutoTokenizer NAME_OR_PATH r*************** device "cuda" if torch.cu…

基于docker实现JMeter分布式压测

为什么需要分布式&#xff1f; 在工作中经常需要对一些关键接口做高QPS的压测&#xff0c;JMeter是由Java 语言开发&#xff0c;没创建一个线程&#xff08;虚拟用户&#xff09;&#xff0c;JVM默认会为每个线程分配1M的堆栈内存空间。受限于单台试压机的配置很难实现太高的并…

[网鼎杯 2018]Fakebook

[网鼎杯 2018]Fakebook 打开环境出现一个登录注册的页面 在登录和注册中发现 了地址栏出现变化&#xff0c;扫一波看看 看看robots.txt和flag.php 访问robots.txt看看 再访问user.php.bak <?php class UserInfo { public $name ""; public …

扩散模型实战(十一):剖析Stable Diffusion Pipeline各个组件

推荐阅读列表&#xff1a; 扩散模型实战&#xff08;一&#xff09;&#xff1a;基本原理介绍 扩散模型实战&#xff08;二&#xff09;&#xff1a;扩散模型的发展 扩散模型实战&#xff08;三&#xff09;&#xff1a;扩散模型的应用 扩散模型实战&#xff08;四&#xff…

JVM 之 class文件详解

目录 一. 前言 二. class文件结构 2.1. 文件格式 2.2. 魔数与版本号 2.3. 常量池 2.4. 访问标志 2.5. 类索引、父类索引和接口索引集合 2.6. 字段表集合 2.7. 方法表集合 2.8. 属性表集合 2.8.1. Code 属性表 2.8.2. Exceptions 属性 2.8.3. LineNumberTable 属性…

[Unity+OpenAI TTS] 集成openAI官方提供的语音合成服务,构建海王暖男数字人

1.简述 最近openAI官方发布了很多新功能&#xff0c;其中就包括了最新发布的TTS语音合成服务的api接口。说到这个语音合成接口&#xff0c;大家可能会比较陌生&#xff0c;但是说到chatgpt官方应用上的聊天机器人&#xff0c;那个台湾腔的海王暖男的声音&#xff0c;可能就有印…

Oracle与Redis Enterprise协同,作为企业缓存解决方案

来源&#xff1a;虹科云科技 虹科干货丨Oracle与Redis Enterprise协同&#xff0c;作为企业缓存解决方案 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 单独使用Oracle作为企业缓存数据库时&#xff0c;会出现哪些问题呢&#xff1f;使用Redis Enterprise与Oracle共…