linux Shell学习笔记第四天

第四天:循环结构

内容大纲:


应用实例分析

for循环

while循环


for循环的原理

达到效果


根据昨天的菜单修改。 选择1、2、3后还会提示是否继续选择的功能。选择4仍然是退出操作。

for variable in list list 变量列表池

do

command1

command2

done

实例一


forlist.sh


#!/bin/bash


#for with list

for loop in 1 2 3 4 5 定义loop的变量 1 2 3 4 5是变量列表

do


echo ${loop}


done


 当后面没有,即等于0,则停止循环。

实例二


var.txt 为了证明变量是回车或者空格分隔,除非双引号专门分隔


1 22


3


4


5


6


forfile.sh


#!/bin/bash


for loop in `cat var.txt`


do


echo ${loop}


done

实例三


编写一个脚本自动生成一个C类IP地址段

IP地址段网络部分由用户指定

./ipaddr.sh 192.168.1

192.168.1.1

192.168.1.2

……

192.168.1.254

#!/bin/bash


for ip in `seq 1 254` seq 产生步进为1,即1-254的值

do


echo ${1}.${ip}


done


for循环嵌套


for 变量名1 in 列表1

do

for 变量名2 in 列表2

do

命令1

done

done

实例四

编写一个脚本自动生成一个C类IP地址段

IP地址段网络部分由用户指定,主机结束部分由用户指定

./ipaddr2.sh 192.168.1 100

192.168.1.1

192.168.1.2

……

192.168.168.1.100

#!/bin/bash


for ip4 in `seq 1 ${2}`


do


echo ${1}.${ip4}


done

#!/bin/bash


for ip3 in `seq 1 5`


do


for ip4 in `seq 1 ${2}`


do


echo ${1}.${ip3}.${ip4}


done


done

while循环的原理

界限测试=条件测试

真假测试。

如果一直为真的话则不会停止, 死循环。

while的格式


while 条件


do


命令1


命令2


done


while的应用场景


while死循环


while [ "1" == "1" ]


do



done


while条件循环


while [ ${num} –lt 10] 小于10一直循环


do



done


解决问题。


使用while来产生一个死循环

通过exit来退出整个脚本

menu-while.sh

#!/bin/bash

while [ "1" == "1" ]

do

clear

echo “——————–menu—————–”

echo “1) Show Time”

echo “2) CPU load”

echo “3) Memory free”

echo “0) Exit”

echo “——————————————–”

echo -n “Enter you chose [0-3]:”

read Chose

case ${Chose} in

0) exit ;;

1) date +%T;;

2) uptime | awk -F ‘[,:]‘ ‘{print $7}';;

3) free -m | awk ‘$1==”Mem:”{print $4}';;

*) echo “This is not between 0-3.” ;;

esac

echo -n “Do you contine [y/n]:”

read contine

if [ "${contine}" == "n" -o "${contine}" == "N" ]

then

exit

fi

done


课后练习

编写一个脚本,产生一个二级的菜单。

第一级有三个功能项:cpu info , memory info ,exit

cpu info 第二级中有四个功能项:分别是显示cpu的类型,显示cpu的负载,返回主菜单,退出脚本

memory第二级中有四个功能项:分别是显示内存剩余量,swap的剩余量,返回主菜单,退出脚本。

总结回顾

for循环的特性

他和c语言和java不一样,不是根据判断语句去控制次数

for实现死循环很难。while做死循环很简单。

原文地址:https://www.cnblogs.com/kscnchina/p/2825620.html