首页 > 系统相关 >Shell中的for与while循环结构语法

Shell中的for与while循环结构语法

时间:2023-11-11 11:02:02浏览次数:26  
标签:opt Shell sh 语法 while 循环 localhost root bash

1 for循环

语法结构如下:

  1. for 变量名 in123        #值的数量决定循环任务的次数
  2. do
  3. 命令序列
  4. done
1.1 for循环的基本语法格式
#编写脚本,进行测试
[root@localhost opt]# vim for01.sh
#!/bin/bash
for i in a b c
do
        echo "hello world"
done
[root@localhost opt]# bash for01.sh		#输出查看结果
ok
ok
ok

#编写脚本,输出i查看结果
[root@localhost opt]# vim for02.sh
#!/bin/bash
for i in a b c
do
    echo ok
    echo $i
done    
[root@localhost opt]# bash for02.sh		#输出查看结果
ok
a
ok
b
ok
c

#通过循环批量显示10个数字
#!/bin/bash
for i in {1..10}	#{1..10}表示1-10之间的数字
do
    echo $i
done

#如果循环次数是通过变量决定可以用seq指令
#!/bin/bash
a=10
for  i  in  `seq $a`           
do
    echo "$i"
done

#编写脚本,批量创建账户
#!/bin/bash
for i in $(cat  /opt/name.txt)    #循环批量创建name.txt里面所有账户,文档中每行是一个名字,该文档要提前创建,与脚本在同一目录下即可
do
useradd  $i
done

vim /opt/name.txt
zhangsan
lisi
wangwu
zhaoliu
1.2 c语言风格的for循环语法格式
#!/bin/bash
for ((i=1;i<=5;i++))
do
   echo $i
done

通过多重for循环打印九九乘法表

[root@localhost opt]# vim for99.sh
#!/bin/bash
for i in {1..9}
do
    for ((j=1;j<=i;j++))
    do
        printf "%-8s" $j*$i=$((j*i))	#%s是格式替代符,%-8s指一个宽度为8个字符(-表示左对齐,没有则表示右对齐)
    done
    echo
done
[root@localhost opt]# bash for99.sh
1*1=1    
1*2=2   2*2=4    
1*3=3   2*3=6   3*3=9    
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81


2 while循环

while循环属于条件式的执行流程,会反复判断指定的测试条件,只要条件成立即执行固定操作,直到条件不成立为止。

所以while循环的条件一般通过变量来控制,在循环体内对变量做相应改变,以便在适当的时候退出,避免陷入死循环。

使用while循环,语法结构如下所示:

  1. while 条件测试
  2. do
  3. 命令序列
  4. done

while循环基本用法

2.1 有效循环脚本
[root@localhost opt]# vim while03.sh
#!/bin/bash
i=1
while [ $i -le 5 ]			#判断i是否小于等于5
do
        echo "$i"
        let i++
done
2.2 死循环脚本
[root@localhost opt]# vim while01.sh
#!/bin/bash
i=1
while [ $i -le 5 ]				#判断i是否小于等于5
do
        echo "abc"
done
[root@localhost ~]# chmod +x while01.sh		#添加执行权限
[root@localhost ~]# ./while01.sh        #死循环,需要使用Ctrl+C终止脚本


#死循环的另一种格式
#!/bin/bash
while :                                    #冒号可以表示条件为真
do
        echo "abc"
				sleep 0.1                                #每次循环休息0.1秒
done
3 控制循环中断的三种命令

exit:退出整个循环,同时退出整个脚本

[root@localhost opt]# vim while02.sh
#!/bin/bash
for i in {1..5}
do
    [ $i -eq 3 ] && exit		#i=3时退出本次脚本
    echo $i
done
echo ok

[root@localhost opt]# bash while02.sh		#结果看到循环后面的任务没有执行
1
2

break:退出本次循环,继续循环后的任务

[root@localhost opt]# vim while03.sh
#!/bin/bash
for i in {1..5}
do
    [ $i -eq 3 ] && break		#i=3时退出循环
    echo $i
done
echo ok
[root@localhost opt]# bash while03.sh		#结果看到循环后面的任务执行了
1
2
ok

continue:退出本次循环,进行下一次循环

[root@localhost opt]# vim while03.sh
#!/bin/bash
for i in {1..5}
do
    [ $i -eq 3 ] && continue	#i=3 时退出本次循环,进入下次循环
    echo $i
done
echo ok

[root@localhost opt]# bash while03.sh		#看到i=3时的循环任务没有执行
1
2
4
5
ok


标签:opt,Shell,sh,语法,while,循环,localhost,root,bash
From: https://blog.51cto.com/u_16315529/8315841

相关文章

  • C语言入门:基本语法
    如果你刚刚接触到C语言,而且感到自己写不出代码,别灰心,这是正常的学习过程。学习编程是一个渐进的过程,不要急于求成。通过不断的实践和学习,你会发现编程变得越来越容易。当你刚开始学习C语言时,最好从一个简单的"Hello,World!"程序开始,这是学习任何编程语言的传统入门方式。以下是一......
  • JMeter进阶使用变量及BeanShell 预处理程序实现复杂调试
    JMeter进阶使用变量及BeanShell预处理程序实现复杂调试有一些测试需要做一些预处理程序才能做http请求,在JMeter下可以通过使用参数+BeanShell预处理程序加工后再发起请求即可。例oauth服务需要通过username,password,client_id,client_secret,grant_type进行请求,这里的密码涉及安......
  • xshell终端——多个窗格同步输入——xshell同时控制多个窗口的快捷方式
    参考:https://blog.csdn.net/m0_58347801/article/details/129551382  ========================   突发发现了终端的另类用法,就是多个窗格同步输入的方法,虽然说这个方法平时确实没啥用,但是突然用到了发现还不赖。 发现在配置Hadoop集群的时候这个操作还真不赖。......
  • [20231109]bash shell快捷键alt+number的问题.txt
    [20231109]bashshell快捷键alt+number的问题.txt--//前一阵子,我想实现12行合并1行的输出,理论讲要使用paste命令加入12个-.输入命令时候要数输入了多少-.我知道bashshell有一--//个快捷键alt+number可以产生连续输入某个字符,但是我一直不知道如何关掉这个功能.有时候误触发这......
  • MySql与SQLServer数据库基础语法差异;
    1.应用Native工具将数据同步,将数据库结构和同步到MySql。视图、存储过程、函数手动创建。 2.移除数据所有数据查询的数据框架标识"dbo"; 3.MySQL中IFNULL用法,用法与SQLServer中ISNULL(expr1,expr2)用法相似.,而MySql中isnull()的返回值为1,否则返回值为0; 4.sqlserver的识别符......
  • C++中的语法知识虚继承和虚基类
    多继承(MultipleInheritance)是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。多继承时很容易产生命名冲突,即使我们很小心地将所有类中的成员变量和成......
  • Linux login_shell和non-login shell区别
    转载地址:linux中的loginshell和non-loginshell重点解析-CSDN博客我们使用linux的时候会发现,当我们进入系统一进入bash,就有一堆变量可以使用,这些东西都是从哪来的呢?这就要归功于linux系统里面的配置文件了。当我们的系统启动之后,它们就会开始读取我们的配置文件让我们后续可以......
  • Shell中的if与case选择结构语法格式
    1if单分支语法构成:if条件测试;then命令序列fi[root@localhostopt]#vimtest02.sh#!/bin/bashif[$UID-eq0];then echo"我是管理员"echookfi[root@localhostopt]#bashtest02.sh我是管理员ok2if双分支语法构成:if条件测试;then命令序列1else命令序列......
  • shell 命令的一些基本用法
    0背景在使用shell的时候,总是有些不习惯,记录一下常用的用法吧。一、符号1.1引号 Shell中有三种引号,分别为双引号("")、单引号('')以及反引号(``)含义:双引号(""):在双引号中,除了$,'',`和\以外所有的字符都解释成字符本身。单引号(''):在单引号中所有的字符包括特殊字符($,'',......
  • windows10 使用Xshell时出现丢失msvcr110.dll
    Xshell启动报错如下:无法启动此程序,因为计算机中丢失MSVCR110.dll。尝试重新安装该程序以解决此问题。解决步骤如下:(亲测有效)1.进入网址:https://www.microsoft.com/zh-CN/download/details.aspx?id=30679点击下载; 2.下载以下两个程序包; 3.下载完成后依次安装 安装后......