shell脚本——循环脚本

循环语句

一定要有跳出循环的条件

1、已知循环次数 (来10个新人,新建10个账号)

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

for循环:(已知次数)

for  名称(自定义名称)in  词语;  do  命令序列;  done

循环列表只是跟循环的次数有关

如果循环列表有6个值,循环6次

循环列表的 表达形式

{1..10}

{1..100}

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

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

 简单的for循环脚本

#计算从1加到100的和
#!/bin/bash
sum=0
i=0
for i in {1..100}
do
let sum+=i
done
echo $sum

#或者

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

真正循环的是命令序列

for 的第二种格式

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

表达式1

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

表达式3

#计算从1到100的和
#!/bin/bash
sum=0
i=0

for((i=0;i<=100;i++))
do
let  sum+=i
done
echo sum=$sum

 for循环的运用:

更改文件的后缀名

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

九九乘法表

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


for((i=1;i<=9;i++)) do for((j=1;j<=i;j++)) do echo -e "${i}*${j}=$[i*j]\t\c" done echo done

批量创建用户

#!/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 123123 | passwd $i --stdin
done
          

 检测一整个网段的ip地址 主机是否存货

#!/bin/bash
ip=192.168.116.
for i in {1..254}
            
do          
{           
ping -c1 -W1 ${ip}${i}  &>/dev/null 
if [ $? -eq -0 ]
then
echo ${ip}${i} >> /data/hoston 
#将存活的IP地址添加到/data/hoston目录下
else echo ${ip}${i} >> /data/hostoff
#将不存活的IP地址添加到/data/hostoff目录下
fi }& done

#bash -x 可以显示脚本执行过程

 #正在使用的主机地址

 #没有使用的主机地址

while循环:成功执行(限定条件)

while 判断条件 条件成立 继续循环 条件不成立 跳出循环

循环格式:

  • while 判断条件
  • do
  • 命令序列
  • .....
  • done
计算从1加到100的和
#!/bin/bash
i=0
sum=0
while [ $i -le 100 ]
do
sum=$[sum+i]
let i++
done
echo $sum

 while循环脚本的运用

快捷创建用户

#!/bin/bash
i=1
while [ $i -le 5 ]
do
useradd stu$i
echo 123123 | passwd stu$i  --stdin
let i++
done

 猜购买商品的价格

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

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

循环格式:

until 判断条件
do
命令序列
done

#计算1到100的和
#!/bin/bash
i=0
sum=0
until [ $i -gt 100]
do
sum=$[sum+i]
let  i++
done
echo sum=$sum

 

posted @ 2023-11-22 16:28  打开方式不对  阅读(426)  评论(0)    收藏  举报