shell编程7,bash解释器的 for循环+while循环

声明!

学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec

shell7,bash解释器的 for循环+while循环

for

前面已经讲过for循环了,不过是sh解释器的for循环,前面已经说过了:在kali中sh解释器的其实是指向dash解释器,而dash解释器是bash解释器的简化版,只有bash解释器的1/10左右的大小 ,所以bash解释器可以支持更多更复杂的语法

for循环有三种写法:反引号,`$(...)`,`((...))` **第一种,**

bash 复制代码
for i in `seq 1 100`
do
	echo $i
done
  • seq 1 100 : 这个命令生成一个数字序列,从1开始直到100(包括100)。seq是一个在Linux/Unix系统中用来产生一系列数字的工具。在这个例子中,它将生成一系列连续的整数:1, 2, 3, ..., 98, 99, 100。
  • for i in ... : 这是for循环的开始,它会遍历由seq 1 100生成的所有数字。每次迭代时,变量i都会被设置为当前迭代中的数字。
  • do...done : 这两个关键字定义了循环体,即在每次迭代时要执行的代码块。在这个例子中,循环体只包含了一条语句------echo $i,这条语句用于输出当前迭代中的数字i
  • echo $i : 在每次循环中,echo命令会被调用,并且当前值$i会被打印到标准输出。

第二种,$(...)

bash 复制代码
for i in $(seq 1 100)
do
	echo $i
done

第三种,((...))

或者使用C语言风格的for循环语法,这可能对熟悉C语言的程序员来说更加直观:

注意:这里的语法不像sh解释器那么严苛,符号前后不需要强制空格

这样标准的也行

bash 复制代码
for (( i=1; i<=100; i++ ))
do
	echo $i
done
复制代码
for ((i=i;i<100;i++ ))
do
        echo $i
done

这里,(( i=1; i<=100; i++ ))直接指定了循环的初始化、条件测试和增量操作,使得整个循环结构看起来更加紧凑。

while

while循环有编程基础的应该都知道,就不细讲语法了,大家看一下实例就都知道怎么写了。还是和for循环一样,将一下sh和bash,注:sh可以的bash都可以

sh解释器

首先sh解释器只能使用[]或者test来规定循环的结束条件,其次对于,循环变量的变化sh解释器可以使用的语法有:$((...))$(expr $i + 1)
$((...))

复制代码
i=1
while [ $i -lt 10  ]
do
        echo $i
        i=$((i+1))
done

$(expr $i + 1)

复制代码
i=1
while [ $i -lt 10  ]
do
        echo $i
        i=$(expr $i + 1)
done

sh解释器不支持:(())和let
如果将i=$((i+1))替换成((i++))

复制代码
i=1
while [ $i -lt 10  ]
do
        echo $i
        ((i++))
done

不支持

程序报错,但是不会停止运行,会直接死循环

替换成let

复制代码
i=1
while [ $i -lt 10  ]
do
        echo $i
        let i=i+1
done

还是一样,程序报错,但是不会停止运行,会直接死循环

bash解释器

sh可以的bash一定可以

bash可以使用更加简单的语法:循环结束条件可以使用(()),循环变量的变化可以使用$((...))$(expr $i + 1)(())let

复制代码
i=1
while(($i<=10))
do
        echo $i
        ((i++))
done

let的使用上面已经讲了,这里就不演示了

相关推荐
lifallen5 分钟前
JCTools 无锁并发队列基础:ConcurrentCircularArrayQueue
java·开发语言·数据结构·算法
千里镜宵烛34 分钟前
深入理解 Linux 线程:从概念到虚拟地址空间的全面解析
开发语言·c++·操作系统·线程
Eternity_GQM1 小时前
【Word VBA Zotero 引用宏错误分析与改正指南】【解决[21–23]参考文献格式插入超链接问题】
开发语言·c#·word
柏油1 小时前
可视化 MySQL binlog 监听方案
数据库·后端·mysql
小米里的大麦1 小时前
025 理解文件系统
linux
舒一笑1 小时前
Started TttttApplication in 0.257 seconds (没有 Web 依赖导致 JVM 正常退出)
jvm·spring boot·后端
张柏慈1 小时前
JavaScript性能优化30招
开发语言·javascript·性能优化
M1A12 小时前
Java Enum 类:优雅的常量定义与管理方式(深度解析)
后端
promising-w2 小时前
【嵌入式C语言】六
c语言·开发语言
打不了嗝 ᥬ᭄2 小时前
Linux 信号
linux·开发语言·c++·算法