shell中的循环和判断

for循环

首先来看for循环,for循环本身的意义我就不再赘述了,我们直接来看一下shell中for循环的格式特点
第一种格式:和java中的for循环格式有点类似,但是也不一样
image.pngimage.png
第二种格式
image.png
image.png

while循环

while循环主要适用于循环次数未知,或不便于使用for直接生成较大列表时
下面来演示一下,创建 while1.sh,注意,这里面需要使用sleep实现休眠操作,否则程序会一直连续的打印内容
image.png
image.png
再来一个测试脚本
image.png
image.png

if判断

前面我们学习了两个循环的使用,下面来学习一下if这个逻辑判断,有了if,shell脚本才真正有了灵魂
多条件分支案例
image.png
image.png

shell扩展

在实际工作中会遇到这种情况,针对带有while无限循环的shell脚本,我们希望它能够一直运行,不影响我在这个窗口执行其它操作
但是现在它会一直占用这个shell窗口,我们称这个脚本现在是在前台执行,不想让它一直占用shell窗口的话,需要把它放到后台执行,如何放到后台呢?很简单,在脚本后面添加一个&即可
演示一下,这样就可以了
image.png
image.png
如何保证关闭shell窗口而不影响放到后台的shell脚本执行呢?
也很简单,在命令前面加上nohup 即可
原理就是,默认情况下,当我们关闭shell窗口时,shell窗口会向之前通过它启动的所有shell
脚本发送停止信号,当我们加上nohup之后,就会阻断这个停止信号的发送,所以已经放到后台的shell脚本就不会停止了。
最后来看一个综合案例
nohup hello.sh >/dev/null 2>&1 &
我们来解释一下

  1. nohup和&:可以让程序一直在后台运行
  2. /dev/null:是linux中的黑洞,任何数据扔进去都找不到了
  3. >/dev/null:把标准输出重定向到黑洞中,表示脚本的输出信息不需要存储
  4. 2>&1 :表示是把标准错误输出重定向到标准输出中