Shell编程与循环语句与函数

目录

循环语句

for(已知次数)

实验示例

九九乘法表

​编辑

从一加到一百的和

双重循环及跳出循环

continue和break的区别:

continue:

break:

面试题

限制条件

while(成功执行)

实验案例

猜商品价格

检测httpd运行

while死循环

until(条件不成功执行)

用until计算从1加到100的和


循环语句

循环: 一定要有跳出循环的条件

1.已知循环的次数(来10个新人 新建10 账号),但是有一个跳出条件

2.未知循环的次数( 女朋友生气,道歉 道到原谅)

for(已知次数)

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

格式一:for 名称[in 词语...];do 命令;done

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

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

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

循环列表的 表现形式

{1..10}

{1..100}

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

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

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

seq 0 2 10 偶数

seq 1 2 10 奇数

Shell编程与循环语句与函数_第1张图片

实验示例

九九乘法表
vim 99.sh
#!/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

:wq
Shell编程与循环语句与函数_第2张图片
从一加到一百的和
[root@localhost ~]# vim f.sh

#!/bin/bash

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

echo sum=$sum

:wq!

[root@localhost ~]# bash f.sh
sum=5050
双重循环及跳出循环

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

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

exit 直接退出脚本

continue和break的区别:

continue:
[rootalocalhost -]# vim w.sh

#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then
continue
fi
echo i=$i
done

:wq!
 
break:
[rootalocalhost -]# vim w.sh

#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then
break
fi
echo i=$i
done

:wq!
 
面试题

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

for i in *.bak
do
pre='echo $i |cut -d"." -f1

mv $i  ${pre}.txt
done

进阶版
#!/bin/bash
for i in `cat /test/name.txt`

do
touch $i
done

#!/bin/bash

for i in *.JPG
do
p=`echo $i | cut d"_" -f1`

n=`echo Si | cut d"_" -f2`

mv $1  ${n}_${p}.jpg
done

限制条件

while(成功执行)
while 条件测试操作
do
命令序列
done

实验案例

猜商品价格
[root@localhost data]# 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

:wq!
 
检测httpd运行
[root@localhost ~]#vim httpd.sh


#!/bin/bash

while ss -natp | grep httpd  &>/dev/null
do
echo "httpd 正常运行"
sleep  3
done
echo "httpd 运行不正常"

:wq!

[rootalocalhost ~]# bash httpd.sh
httpd 运行正常

[rootalocalhost ~]systemctl stop httpd
[rootalocalhost ~]
[rootalocalhost ~]
[rootalocalhost ~]# bash httpd.sh 
httpd 运行不正常
while死循环

while[ 1 -eq 1 ]

写一个永远为真的表达式,1等于1这条件永远为真,所以这个脚本会一直循环下去

until(条件不成功执行)
until 条件测试操作
do
命令序列
done
用until计算从1加到100的和
[rootalocalhost data]# vim until.sh

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

echo sum=$sum

:wq!

[rootalocalhost data]# bash until.sh
sum=5050

你可能感兴趣的:(chrome,网络,前端)