shell 循环语句

目录

1.循环含义

2.for循环

1.列表循环

用for循环一个100以内所有整数加起来求和

 2.不带列表循环

检测一整个网段的主机是否存在 

​编辑

3.for的第二种格式

脚本写一个正方形

批量修改后缀名

​编辑

2.while

脚本写一个猜价格游戏

 批量添加用户

3.until

写一个发送消息脚本

​编辑

写一个求和的脚本


1.循环含义

将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件

重复运行次数

循环次数事先已知

循环次数事先未知

2.for循环

1.已知循环的次数 (来十个新人,创建10个账号)

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

1.列表循环

语法结构

for 变量名 in {命令列表}

do

          命令

done

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

循环列表6个值循环六次

真正循环的东西是命令序列

列表循环的表现形式

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

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

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

seq 0 2 10偶数

seq 1 2 10奇数

用for循环一个100以内所有整数加起来求和

vim   jj

#!/bin/bash
sum=0
for i in {0..100}
do
sum=$[sum+i]
done
echo "总和是:$sum"

 

 

 

 2.不带列表循环

for 变量名

do

       命令

done

vim ssss

 把a赋值给变量i,i有值了它就开始执行do..done了

检测一整个网段的主机是否存在 

vim ip.sh

 #!/bin/bash
ip=192.168.17.

for i in {1..254}

do
{
ping -c1 -W1 ${ip}${i} &>/dev/null
if [ $? -eq 0 ]
then
echo ${ip}${i} >> /data/hoston
else
echo ${ip}$i   >> /data/hostoff
fi
} &
done

3.for的第二种格式

for((表达式1;表达式2;表达式3));

do

         命令格式

done

表达式一   定义变量并赋初值

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

表达式三   决定循环变量如何改变,决定循环什么时候退出

sum+=i    等于   sum=sum+i  
#需要使用 let  命令

++    自身变量+1
--  自身变量-1
+=5    自身变量+5
-=5    自身变量-5
*=5    自身变量*5
/=5    自身变量/5
%=5    自身变量%5

脚本写一个正方形

vim zfx

 #!/bin/bash
for j in {1..9}
do
for i  in {1..9}
do
echo -e " * \c"
done
echo
done

脚本写一个九九乘法表

vim cfb

#!/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

 

批量修改后缀名

vim hz.sh

 #!/bin/bash
for i in *.txt
do
pre=`echo $i|cut -d"." -f1`
mv $i ${pre}.bak
done

2.while

相对于for,需要知道循环次数

我们只知道停止条件,不知道次数,就需要使用while

直到达到条件

while循环

1、语法结构

2、死循环

while循环一般用于有条件判断的循环,若判断条件为真,则进入循环,当条件为假就跳出循环

格式

while 循环

while 判断条件

do

命令序列

done

判断条件((i=0;i<=100;i++))

条件成立   继续循环   条件不成立 跳出循环

i++在外面需要加let

死循环

while true

脚本写一个猜价格游戏

vim cai.sh

#!/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

 批量添加用户

v im yh.sh

#!/bin/bash
for i in `cat /data/name.txt`
do
id $i &>/dev/null
if
[ $? -eq 0 ]
then
echo"$i 已存在"
continue
fi
useradd $i
echo 123 | passwd $i --stdin
done

3.until

until 循环与 while 循环类似,while 循环能实现的脚本 until 同样也可以实现,但区别是while 循环在条件为真是继续执行循环,而 until 则是在条件为假时执行循环

格式

until  条件测试操作

do

命令序列

done

写一个发送消息脚本

vim fxx.sh

#!/bin/bash
username=$1
if [ $# -lt 1 ]
then
echo "请在脚本后输入 用户名和发送信息" 
exit 1
fi

if  grep "^$username" /etc/passwd &>/dev/null
then :
else
 echo "用户不存在"
 exit 1
fi


until who |grep $username &>/dev/null
do
echo "用户不在线"
sleep 5
done

mes=$2
echo $mes |write $username

写一个求和的脚本

vim qh.sh

#!/bin/bash
i=0
sum=0
while [ $i -le 100 ]
do
sum=$[sum+i]
let i++
done
echo sum=$sum

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值