shell脚本循环语句

本文详细介绍了for、while、until循环语句的用法,包括它们的表现形式、语法示例以及如何使用break和exit控制循环流程。涵盖了Bash脚本中的基本循环操作和实例应用。
摘要由CSDN通过智能技术生成

目录

一、for循环语句

列表循环:

表现形式:

语法:

范例:

for的第二种格式:

范例:

二、while循环语句

语法:

范例:

三、until循环语句

范例:

四、双重循环及跳出循环

单层循环

双重循环(break 与 exit )


一定要跳出循环的条件:

1、一直循环的次数 (来10个新人 新建10 账号)

2、未知循环的次数,但是有一个跳出条件( 女朋友生气, 道歉 道到原谅)

for (已知次数)

while 成功执行

until 条件不成功执行 ( 限定条件 )

一、for循环语句

列表循环:

循环列表 只和你循环的额次数有关

循环列表有 6个值 那就循环6次

表现形式:

{1..10}

{1..100}

{0..100..2} 从0开始到100结束,每次加2 步长为2 打印的都是偶数

{1..100..2} 从0开始到100结束,每次加2 步长为2 打印的都是奇数

seq 调用 seq的命令执行结果 1到10

seq 0 2 10 偶数

seq 1 2 10 奇数

语法:

for  变量名  in  {列表}
do
命令序列
done

范例:


例子1:求和
#!/bin/bash
sum=0
i=0

for i in {1..100}
do
sum=$[sum+i]
done
echo $sum

1、创建与运行脚本

2、脚本配置


例子2:将某文件夹下的所有txt文件后缀改为bak
#!/bin/bash
for i in *.txt
do
pre=`echo $i|cut -d"." -f1`
mv $i ${pre}.bak
done

实验环境创建

1、创建与运行脚本

2、脚本配置

例子:九九乘法表
#!/bin/bash
for j in {1..9}
do
  for i in `seq $j`
  do
  echo -e "${i}*${j}=$[i*j]\t\c"
  done
echo
done

1、创建与运行脚本

2、脚本配置

例子:在/date目录下的name.txt文件中 批量添加用户
#!/bin/bash
for i in `cat /date/name.txt`
do
id $i &>/dev/null
if
[ $? -eq 0 ]
then
echo "$i 已存在"
continue
fi
useradd $i
echo 123123 |passwd $i --stdin
done

实验环境准备

1、创建与运行脚本

2、脚本配置

例子:根据IP地址 检查主机是否存活,
并将存活的主机放入一个文件夹中,
不存活的主机放在另一个文件中
#!/bin/bash
ip=192.168.134.

for i in {1..254}
do
{
ping -c1 -w1 ${ip}${i} &>/dev/null
if [ $? -eq 0 ]
then
echo ${ip}${i} >> /date/hoston
else
echo ${ip}${i} >> /date/hostoff
fi
} &
done

1、创建与运行脚本

2、脚本配置


for的第二种格式:

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

表达式1
表达式2 是一个判断,如果满足表达式2 才执行
表达式3

范例:


例子1:求和
#!/bin/bash
sum=0
i=0
for((i=0;i<=100;i++))
do
let   sum+=i
done
echo sum=$sum

1、创建与运行脚本

2、脚本配置

例子2:九九乘法表
#!/bin/bash
for((j=1;j<=9;j++))
do
  for((i=1;i<=j;i++))
  do
  echo -e "${i}*${j}=$[i*j]\t\c"
  done
echo
done

1、创建与运行脚本

2、脚本配置

二、while循环语句

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

语法:

while 判断条件 条件成立 继续 循环条件不成立 跳出循环
do
命令序列
done

范例:

例子1:求和
#!/bin/bash
i=0
sum=0

while [ $i -le 100 ]
do
sum=$[sum+i]
let i++
done

echo sum=$sum

1、创建与运行脚本

2、脚本配置

例子2:猜价格
#!/bin/bash
m=`echo $[RANDOM%1000+1]`
t=0

while true
do
read -p "请输入猜的价格(1-1000内的整数):" h
let  t++
if [ $h -eq $m ]
then
echo "恭喜你猜对了 商品价格是 $h 您一共猜了 $t 次"
exit
elif [ $h -gt $m ]
then
echo "您的价格猜高了"
else
echo "您的价格猜低了"
fi
done

1、编辑脚本

2、配置脚本

3、运行脚本

例子3:检测http是否正常运行
#!/bin/bash
while ss -natp l grep httpd&>/dev/null
do

echo "httpd 正常运行"
sleep 3
done
echo "httpd 运行不正常"

1、脚本创建与运行

2、配置脚本

三、until循环语句

范例:

例子1:求和(待修订)
#!/bin/bash
sum=0
i=0
until [ $i -gt 100 ]
do
let sum=$i+$sum
let i++
done
echo sum=$sum

四、双重循环及跳出循环

break跳出单个循环 break n 数字数字是几代表跳出n层循环

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

exit 直接退出脚本

单层循环

例子:continue 跳过某个循环,
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then
continue 
fi
echo i=$i
done

1、编辑脚本

2、配置脚本

3、运行脚本


例子:break 单层循环内到了某个循环 直接终止
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then
break
fi
echo i=$i
done

1、编辑脚本

2、配置脚本

3、运行脚本

例子:exit 到了某个循环直接退出脚本,在单层循环内与 break 效果相同。
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then
exit
fi
echo i=$i
done

1、编辑脚本

2、配置脚本

3、运行脚本


双重循环

(break 与 exit )

例子:break 本层循环 到某次就会结束,但外层循环继续运行不会终止
#!/bin/bash
for j in {1..10}
do
        for i in {1..10}
        do
        if  [ $i -eq 5 ]
        then
        break
        fi
        echo i=$i
        done
echo --------------------
done

1、编辑脚本

2、配置脚本

3、运行脚本

例子:exit 任然是到了某个循环直接退出脚本运行
#!/bin/bash
for j in {1..10}
do
        for i in {1..10}
        do
        if  [ $i -eq 5 ]
        then
        exit
        fi
        echo i=$i
        done
echo --------------------
done

1、编辑脚本

2、配置脚本

3、运行脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值