当前位置:   article > 正文

shell脚本之循环语句

shell脚本之循环语句

1、for循环

1.1执行机制:遍历

执行机制: 依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环 结束 如果省略 [in
WORDS … ] ,此时使用位置参数变量 in “$@”

1.2基本格式

第一种

for 已知循环次数

for  tlj(变量)   循环次数(取值列表)

do
需要循环的事件

done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

第二种

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

for ((expr1;expr2;expr3))
do
       command
done

expr1:定义变量并赋初值
expr2:决定是否循环
expr3:决定循环变量如何改变,决定循环什么时候退出
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

1.3脚本例子

打印一列问号

#!/bin/bash
for i  in {1..9}
do
echo -e " ? "
done
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

打印一个正方形

#!/bin/bash
for j in {1..9}
do
for i  in {1..9}
do
echo -e " * \c"
#\c换行
done
echo
#换行
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述

九九乘法表

#!/bin/bash
for j in {1..9}
    do
       for i in `seq $j`
    do
	 echo -e "${i}x${j}=$[i*j] \t\c"
	 #\t tab键可以对齐
    done
	echo
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

求1到10的和方法一

#/bin/bash
sum=0
for i in {1..10}
do
  sum=$[sum+i]
  let i++
done
echo "$sum"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

累加到10方法二

#!/bin/bash
sum=0
for i in {1..100}
do
let sum=$i+$sum
#sum=$[i+sum]
#两种方法都可以
done
echo "$sum"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

批量添加用户

[root@localhost opt]# vim add.sh
#!/bin/bash
ulist=$(cat /opt/user.txt)
for uname in $ulist
do
   useradd $uname
   echo "123123" |passwd --stdin  $uname &>/dev/null
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述
在这里插入图片描述

2、while循环:判断为假时停止

相对于for,需要知道循环次数 我们只知道停止条件,不知道次数,就需要使用while 直到达到条件

2.1基本格式

重复测试某个条件,只要条件成立则反复执行,当命令判断为假时停止

格式:
while  [ 条件测试操作 ]
do						#do代表循环的开始
	判断式/命令序列
done 					#done代表循环的结束
  • 1
  • 2
  • 3
  • 4
  • 5

2.2自制小游戏

猜价格小游戏

#!/bin/bash
p=`echo $[RANDOM%1000+1]`
time=0
 
while true
do
let time++
read -p "请输入您猜测的价格(1-1000):" h
if [ $h -eq $p ]
then
echo "恭喜您猜中了,您一共猜测了$time次"
exit
elif [ $h -gt $p ]
then
echo "您猜测的价格过高"
else
echo "您猜测的价格过低"
fi
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在这里插入图片描述
在这里插入图片描述

累加到10方法三

#!/bin/bash
i=0
sum=0
while [ $i -le 100 ]
do
sum=$[i+sum]
let i++
done
echo $sum
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

3、until循环:判断为真时停止

3.1基本格式

重复测试某个条件,只要条件不成立则反复执行

格式:
until  [ 条件测试操作 ]
do
	判断式/命令序列
done
  • 1
  • 2
  • 3
  • 4
  • 5

3.2脚本例子

累加到10方法四

#!/bin/bash
sum=0
i=0
until [ $i -gt 100 ]
do
 sum=$[sum+i]
 let i++
done
echo "{1..100}的和:$sum"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

4、嵌套循环

在循环内部再使用一个循环称为嵌套循环
格式:

#!/bin/bash
for ((i=1;i<5;i++))
do
        echo 此${i}为外部循环
        for((j=1;j<4;j++))
        do
                echo -e "\t此${j}为内部循环"
        done
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

5、循环语句中的break、exit和continue的使用

5.1break的使用

当满足条件的情况下break会跳出当前循环体

#!/bin/bash
for ((i=1;i<5;i++))
do      
        echo 此${i}为外部循环
        for((j=1;j<4;j++))
        do
            if [ $j -eq 3 ]			<------如果j的值为3
            then
                break				<------跳出当前循环(内部)
            fi  
        echo -e "\t此${j}为内部循环"
        done
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这里插入图片描述

5.2exit的使用

当满足条件的情况下exit会直接退出当前脚本

#!/bin/bash
for ((i=1;i<5;i++))
do
        echo 此${i}为外部循环
        for((j=1;j<4;j++))
        do
            if [ $j -eq 3 ]					<------如果j的值为3
            then
                exit						<------结束当前脚本
            fi
        echo -e "\t此${j}为内部循环"
        done
done
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

在这里插入图片描述

5.3continue的使用

continue中止某次循环中的命令,但不会完全中止整个命令

#!/bin/bash
for ((i=1;i<5;i++))
do
        echo 此${i}为外部循环
        for((j=1;j<4;j++))
        do
            if [ $j -eq 2 ]					
            then
                continue					
            fi
        echo -e "\t此${j}为内部循环"
        done
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这里插入图片描述

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/304573
推荐阅读
相关标签
  

闽ICP备14008679号