shell脚本之循环语句(for、while、untli)

循环语句:

一定要有跳出循环条件

循环条件:

1.已知循环的次数(新来十个人,就要新建十个账号

2.未知循环的次数,但是要有跳出循环条件(对象生气,要道歉到原谅为止)

for(已知次数)

限定执行: while条件成功执行 ,until条件不成功执行

for

语法1:for i(变量名) in 循环列表;do 命令序列;done

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

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

循环列表的表现形式:

{1..10}

{1..100}

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

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

面试题:

将某文件夹下的所有.txt结尾的文件后缀改为.bak

#!/bin/bash
for i in *.txt
do
pre=`echo $i|cut -d"." -f1`
       提取"."为分隔符的第一列
mv $i  ${pre}.bak
done

将1到100相加

#!/bin/bash
sum=0
i=0
for i in {1..100};
do
sum=$[sum+i];
done

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

192.168.116.0
将存活的主机放在同一个文件中
将不存活的主机放在另一个文件中


#!/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(存活)
else
echo ${ip}${i} >> /data/hostoff(不存活)
fi
}&
done

直角三角形

shell脚本之循环语句(for、while、untli)_第1张图片shell脚本之循环语句(for、while、untli)_第2张图片

99乘法表

shell脚本之循环语句(for、while、untli)_第3张图片shell脚本之循环语句(for、while、untli)_第4张图片

语法2:for

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

表达式1:定义变量并赋值

表达式2:决定是否循环

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

shell脚本之循环语句(for、while、untli)_第5张图片

设置1+1一直+到100得出结果

#!/bin/bash
sum=0
i=0
for((i=0;i<100;i++))#取一个初始值i=0;如果i小于100;在i的值上加一,再回到表达式1继续执行,直到表达式2不满足跳出循环。
do
let sum+=i 
done
echo $sum

while

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

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

do

命令序列

done

判断条件

((i=0;1<=100;i++))

死循环命令:一直执行

1.while true

2.while :

示例

批量添加用户

  • 用户名称以stu开头,按数字顺序进行编号
  • 一共添加20个用户,即stu1、 stu2、…、stu20
  • 初始密码均设为123456

shell脚本之循环语句(for、while、untli)_第6张图片

shell脚本之循环语句(for、while、untli)_第7张图片

面试题

1到100相加

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

猜随机数

shell脚本之循环语句(for、while、untli)_第8张图片

until

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

语法:

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

每5秒给用户发消息

#!/bin/bash
if [ $# -eq 0 ]
then
echo "请在脚本后输入 用户名和要发送的消息"
fi
​
until  w |grep $1 -q
do
echo "用户不在线"
sleep 5
done
​
echo $2|write $1
​

双重循环及跳出循环

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

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

exit 直接退出脚本

break(到5终止)

shell脚本之循环语句(for、while、untli)_第9张图片

continue(到5跳过)

shell脚本之循环语句(for、while、untli)_第10张图片

exit(到5全部停止,不循环)

shell脚本之循环语句(for、while、untli)_第11张图片

面试题:筛选出主机名

你可能感兴趣的:(java,面试,网络)