shell编程之八(循环嵌套-与循环控制符–以及交互式菜单select结构)

嵌套循环(在一个循环体内包含其他循环)

利用循环嵌套编写的九九乘法表

for (( i=1; i<=9; i++  ))
do
	for (( j=1; j<=i; j++  ))
	do
		let "he=i*j"
		echo -n "$i*$j=$he    "
	done
	
	echo  ""
done

[root@localhost ~]# sh ceshi.sh 
1*1=1    
2*1=2    2*2=4    
3*1=3    3*2=6    3*3=9    
4*1=4    4*2=8    4*3=12    4*4=16    
5*1=5    5*2=10    5*3=15    5*4=20    5*5=25    
6*1=6    6*2=12    6*3=18    6*4=24    6*5=30    6*6=36    
7*1=7    7*2=14    7*3=21    7*4=28    7*5=35    7*6=42    7*7=49    
8*1=8    8*2=16    8*3=24    8*4=32    8*5=40    8*6=48    8*7=56    8*8=64    
9*1=9    9*2=18    9*3=27    9*4=36    9*5=45    9*6=54    9*7=63    9*8=72    9*9=81

利用循环嵌套编写8*8的围棋棋盘

for (( i=1; i<=9; i++  ))
do
	for (( j=1; j<=8; j++  ))
	do
		let "x=i+j"
		let "tmp=x%2"
		if [ "$tmp -eq 0" ];then
			echo -ne "\033[47m"
		else
			echo -ne "\033[40m"
		fi
	done
	echo ""

done


#在这里无法展示效果,可以参考棋盘的样子,一个白一个黑

循环控制符(linux的shell编程中,有时需要立即从循环中退出)
break #如果是退出循环可以使用它
continue #退出本次循环,执行后续循环

break循环的两个例子

for (( i=1; i<=9; i++  ))
do
	for (( j=1; j<=i; j++  ))
	do
		let "he=i*j"
		if [ "$he" -eq 7 ];then
			break
		fi
		echo -n "$i*$j=$he    "
	done
	
	echo  ""
done

[root@localhost ~]# sh ceshi.sh 
1*1=1    
2*1=2    2*2=4    
3*1=3    3*2=6    3*3=9    
4*1=4    4*2=8    4*3=12    4*4=16    
5*1=5    5*2=10    5*3=15    5*4=20    5*5=25    
6*1=6    6*2=12    6*3=18    6*4=24    6*5=30    6*6=36    

8*1=8    8*2=16    8*3=24    8*4=32    8*5=40    8*6=48    8*7=56    8*8=64    
9*1=9    9*2=18    9*3=27    9*4=36    9*5=45    9*6=54    9*7=63    9*8=72    9*9=81

for (( i=1; i<=9; i++  ))
do
	if [ "$i" -eq 7 ];then
		break
	fi

	for (( j=1; j<=i; j++  ))
	do
		let "he=i*j"
		echo -n "$i*$j=$he    "
	done
	
	echo  ""
done

[root@localhost ~]# sh ceshi.sh 
1*1=1    
2*1=2    2*2=4    
3*1=3    3*2=6    3*3=9    
4*1=4    4*2=8    4*3=12    4*4=16    
5*1=5    5*2=10    5*3=15    5*4=20    5*5=25    
6*1=6    6*2=12    6*3=18    6*4=24    6*5=30    6*6=36

continue例子

for (( i=1; i<=9; i++  ))
do

	for (( j=1; j<=i; j++  ))
	do
		let "he=i*j"
		if [ "$he" -eq 7 ];then
			continue
		fi
		echo -n "$i*$j=$he    "
	done
	
	echo  ""
done


[root@localhost ~]# sh ceshi.sh 
1*1=1    
2*1=2    2*2=4    
3*1=3    3*2=6    3*3=9    
4*1=4    4*2=8    4*3=12    4*4=16    
5*1=5    5*2=10    5*3=15    5*4=20    5*5=25    
6*1=6    6*2=12    6*3=18    6*4=24    6*5=30    6*6=36    
7*2=14    7*3=21    7*4=28    7*5=35    7*6=42    7*7=49    
8*1=8    8*2=16    8*3=24    8*4=32    8*5=40    8*6=48    8*7=56    8*8=64    
9*1=9    9*2=18    9*3=27    9*4=36    9*5=45    9*6=54    9*7=63    9*8=72    9*9=81 

select结构(用于交互式菜单,它比case多了交互性)

select variable in {list}
do
	command
	........
	break
done

例子:设计一个交互式菜单

echo "请输入一个颜色单词"
select color in "red" "black" "green" "white" "blue"
do
	break
done
echo "你输入的颜色是$color"

[root@localhost ~]# sh ceshi.sh 
请输入一个颜色单词
1) red
2) black
3) green
4) white
5) blue
#? 3
你输入的颜色是green
[root@localhost ~]# 
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/331.html

最后编辑于:2017/9/26作者: 辣条①号

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注