文章目录

  • 一、for循环语句-单循环
  • 1、格式一
  • 2、 格式二
  • 3、格式三
  • 4、取值列表常见的格式
  • 5、实例
  • 二、for循环语句-双循环
  • 1、实例
  • 三、while语句
  • 1、格式
  • 2、实例
  • 3、break、continue、exit的区别
  • 四、until语句
  • 1、格式
  • 2、实例


一、for循环语句-单循环

命令序列是不变的,通过取不同变量名,用来执行同一组命令,中间可以加入if语句

1、格式一

格式一
for 变量名 in  取值列表
do
    命令序列
done

2、 格式二

for 变量名
do
done

当for语句内没有取值列表时,可以在执行命令时加上取值列表内容

实例1:

shell文件循环执行python程序 shell写循环语句_bash


shell文件循环执行python程序 shell写循环语句_取值_02


实例2:

shell文件循环执行python程序 shell写循环语句_取值_03


shell文件循环执行python程序 shell写循环语句_bash_04

3、格式三

for ((i=1;i>3;i++))  #i每循环一次+1,一直到小于3
do
done

实例1

shell文件循环执行python程序 shell写循环语句_i++_05


shell文件循环执行python程序 shell写循环语句_bash_06


实例2

shell文件循环执行python程序 shell写循环语句_bash_07


shell文件循环执行python程序 shell写循环语句_bash_08

4、取值列表常见的格式

这里拿实际的例子来说明
创建脚本文件4.sh

  • 使用大括号 { }
  • 直接写参数,空格隔开参数


    实例
  • 使用seq命令,seq 打印5个hello



    seq命令给变量值

5、实例

  • 打印出100内的偶数
    双中括号是做运算的
  • shell文件循环执行python程序 shell写循环语句_取值_09

  • 双括号是取括号内的值,不加双括号只会取值&i%2
  • shell文件循环执行python程序 shell写循环语句_bash_10

  • 验证
  • shell文件循环执行python程序 shell写循环语句_i++_11

  • 打印出100内的偶数的和
    三种方式
  • 第一种
  • 第二种
  • 第三种
  • 1-100求和
  • 多个用户判断,如果系统存在用户,输出已存在,若不存在,就创建
    vim u.sh
#!/bin/bash
for i in `cat user.txt`
do
id $i &> /dev/null
if [ $? -eq 0 ];then
echo "用户已存在" 
else
     useradd $i
     echo "123" | passwd --stdin $i &> /dev/null
     echo "已创建用户$i,并设置密码"
fi
done

验证

  • 创建ip段,验证是否可以ping通

    创建ip段,验证是否可以ping通
#!/bin/bash
a=192.168.35
for ip in {2..50}
do
ping -c 3 $a.$ip &> /dev/null
if [ $? -eq 0 ];then
        echo "$a.$ip is up"
else
        echo "$a.$ip is down"
fi
done

验证

shell文件循环执行python程序 shell写循环语句_shell文件循环执行python程序_12

二、for循环语句-双循环

1、实例

  • ” 打出矩阵、三角形、菱形、五角星
    打出5
    5的星星矩阵

shell文件循环执行python程序 shell写循环语句_bash_13


升级!,可以自定义矩阵规格

shell文件循环执行python程序 shell写循环语句_i++_14


shell文件循环执行python程序 shell写循环语句_shell文件循环执行python程序_15


升级!!,自定义三角形*

shell文件循环执行python程序 shell写循环语句_取值_16


shell文件循环执行python程序 shell写循环语句_取值_17


升级!!!,输出等腰三角形

#!/bin/bash
for ((i=1;i<=5;i++))
do
        for((j=5;j>=$i;j--))
        do
        echo -n " "
        done
        for((z=1;z<=$i;z++))
        do
        echo -n "* "
        done
echo
done

升级!!!!,输出菱形

read -p "请输入星星的规格: " p
for ((i=1;i<=$p;i++))
do
        for((j=5;j>=$i;j--))
        do
        echo -n " "
        done
        for((z=1;z<=$i;z++))
        do
        echo -n "* "
        done
echo
done
for((i=1;i<=$p;i++))
do
        for((j=1;j<=$i;j++))
        do
        echo -n " "
        done
        for((z=5;z>=$i;z--))
        do
        echo -n "* "
        done
echo
done

验证

shell文件循环执行python程序 shell写循环语句_shell文件循环执行python程序_18


终极大佬!!!!!!五角星

#!/bin/bash
#先做五角星上面的角
for ((i=1;i<=6;i++))
do
        for ((j=18;j>i;j--))
        do
        echo -e " \c"
        done
        for ((k=1;k<=i;k++))
        do
        sleep 0.2s
        echo -e -n "\e[5;32m* \e[0m"
        done
echo ''
done
#做6层长度
for ((i=1;i<=6;i++))
do
        for ((k=1;k<=i;k++))
        do
        echo -n " "
        done
        for ((j=18;j>i;j--))
        do
        sleep 0.2s
        echo -e -n "\e[5;33m* \e[0m"
        done
echo ''
done
#做最后的
for ((i=1;i<=6;i++))
do
        for ((k=6;k>i;k--))
        do
        echo -e " \c"
        done
        for ((j=7;j>i;j--))
        do
        sleep 0.2s
        echo -e -n "\e[5;34m* \e[0m"
        done
        for ((j=3;j<i*5;j++))
        do
        echo -e " \c"
        done
        #第二个角
        for ((j=1;j<i;j++))
        do
        echo -e " \c"
        done
        for ((k=6;k>=i;k--))
        do
        sleep 0.2s
        echo -e -n "\e[5;35m* \e[0m"
        done
echo ''
done

验证

shell文件循环执行python程序 shell写循环语句_bash_19

  • 用for语句打出99乘法表
#!/bin/bash
num=0
for ((i=1;i<=9;i++))
do
        for((j=1;j<=$i;j++))
        do
        num=$(($i*$j))
        echo -n -e "$j*$i=$num\t"
        done
echo
done

验证

shell文件循环执行python程序 shell写循环语句_bash_20

  • 打印出三个数1,2,3的所有三位数的组合
#!/bin/bash
for ((i=1;i<=3;i++))
do
        for ((j=1;j<=$i;j++))
        do
        for ((z=1;z<=$j;z++))
        do
        echo -n  "$i$j$z "
        done
        done
echo
done

验证

shell文件循环执行python程序 shell写循环语句_bash_21

三、while语句

1、格式

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

  • 格式一:条件成立时,do和done之间反复循环,直到条件不成立就done
while [条件测试操作]
do
命令序列
done

实例

当1=1时,打印hello;此时会一直打印hello

shell文件循环执行python程序 shell写循环语句_i++_22


shell文件循环执行python程序 shell写循环语句_bash_23

  • 格式二: 执行命令返回码为0时,执行do
while 命令
do
命令序列
done

shell文件循环执行python程序 shell写循环语句_shell文件循环执行python程序_24


以上两种格式又称之为死循环,还有两种死循环的表达方式

  • while true
  • while :
    若想中止死循环,需要在命令序列内加入“let i++”

2、实例

  • 打印出12345,上山打老虎
i=1
while [ $i -le 5 ]
do
echo $i
let i++
done
echo “上山打老虎”

shell文件循环执行python程序 shell写循环语句_bash_25

  • 计算1-100的偶数和
#!/bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
        if [[ $i%2 -eq 0 ]];then
        sum=$[$i+$sum]
        fi
let i++
done

echo $sum

验证

shell文件循环执行python程序 shell写循环语句_shell文件循环执行python程序_26

3、break、continue、exit的区别

  • break:退出当前循环
  • continue:当前条件成立,执行下一层条件
  • exit:直接退出脚本
    实例
    猜数字游戏,没有猜中一直猜,猜中即停止
#!/bin/bash
n=30
while true
do
read -p "请输入一个数字:" num
if [ $num -eq $n ];then
echo "你猜对了"
break
elif [ $num -gt $n ];then
echo "你猜小了"
elif [ $num -lt $n ];then
echo "你猜大了"
fi
done
~

shell文件循环执行python程序 shell写循环语句_i++_27


这里拿一个打印1-5的例子具体讲解下三者的区别

只打印其中的1-5

#!/bin/bash
i=1
while [ $i -le 10 ]
do
echo $i
if [ $i -ge 5 ];then
break
fi
let i++
done

一直打印5

#!/bin/bash
i=1
while [ $i -le 10 ]
do
echo $i
if [ $i -ge 5 ];then
continue
fi
let i++
done

exit:可以指定输出内容

#!/bin/bash
i=1
while [ $i -le 10 ]
do
echo $i
if [ $i -ge 5 ];then
exit 22
fi
let i++
done

shell文件循环执行python程序 shell写循环语句_shell文件循环执行python程序_28

四、until语句

1、格式

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

until 条件测试操作
do
	命令序列
done

实例
若1大于1,则输出11;结果是不停输出11

#!/bin/bash
until [ 1 -gt 1 ]
do
echo 11
done

以上成为死循环表达式,还有一张表达方式:
until false

2、实例

计算1-50的和

#!/bin/bash
i=1
sum=0
until [ $i -gt 50 ]
do
let sum=$i+$sum
let i++
done
echo $sum

验证

shell文件循环执行python程序 shell写循环语句_bash_29