过程式编程

选择执行

顺序执行: if, case

循环执行: for, while, until


for循环列表

for i in LIST; do
    循环体
done

for i in LIST
do
    循环体
done

wKioL1m0D4WwE7hkAAApDfCzWpM544.png


while循环

while CONDITION; do
    循环体
done

while CONDITION
do
    循环体
done

CONDITION 循环控制条件,每执行一次循环体,需要再次进行判断 
   true时,执行一次循环
   false时,退出循环

练习:100以内所有正整数之和

练习: 100以内所有偶数和

练习:添加10个用户

练习:通过ping命令探测172.16.250.1-254范围内的所有主机的在线状态.用while循环

练习:打印9x9乘法表

练习:利用RANDOM生成10个随机数,输出这10个数字,并显示其中最大者和最小者


练习:100以内所有正整数之和

#!/bin/bash
#
declare -i sum=0
for i in {1..100}; do
	let sum=$sum+1
done
echo $i
echo "summary: $sum"
#!/bin/bash
#
declare -i sum=0
declare -i i=1
while [ $i -le 100 ]; do
	sum=$[$sum+$i]
	let i++
done

echo $i
echo "summary: $sum"

练习: 100以内所有偶数和

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

echo $i
echo "summary: $sum"	

练习:添加10个用户user1-user10

#!/bin/bash
#
declare -i i=1
declare -i users=0
while [ $i -le 10 ]; do
	id user$i &> /dev/null
	retval=$?
	[ $retval -ne 0 ] && useradd user$i &> /dev/null
	[ $? -eq 0 ] && echo "Add user user$i finished" && let users=$users+1
done

echo "Add $users users"

练习:通过ping命令探测172.16.250.1-254范围内的所有主机的在线状态.用while循环

#!/bin/bash
#
declare -i IP='172.16.250.'
declare -i i=1
declare -i uphosts=0
declare -i downhosts=0
while [ $i -le 254 ]; do
	if ping -c 1 -w 1  $IP$i &> /dev/null; then
		echo "$IP$i is up"
		let uphosts++
	else
		echo "$IP$i is down"
		let downhosts++
	fi
done

echo "uphosts: $uphosts"
echo "downhosts: $downhosts"

练习:打印9x9乘法表

#!/bin/bash
#
for i in {1..9}; do
	for j in $(seq 1 1 $i); do
		echo -ne "${j}X${i}=$[$i*$j]\t"
		j=$(($j+1))
	done
	echo
done
#!/bin/bash
#
declare -i i=1
while [ $i -le 9 ]; do
	declare -i j=1
	while [ $j -le $i ]; do
		echo -ne "${j}X${i}=$[$i*$j]\t"
		j=$(($j+1))
	done
	echo
	i=$(expr $i + 1)
done	

练习:利用RANDOM生成10个随机数,输出这10个数字,并显示其中最大者和最小者

#!/bin/bash
#
declare -i max=
declare -i min=
declare -i i=1
declare -i random
while [ $i -le 10 ]; do
	random=$RANDOM
	echo $random

	if [ $i -eq 1 ]; then
		max=$random	
		min=$max
	fi

	if [ $i -gt 1 ]; then
		if [ $random -gt $max ]; then
			max=$random
		fi
		if [ $random -lt $min ]; then
			min=$random
		fi
	fi
	let i++
done

echo "max: $max"
echo "min: $min"
==========================================
#!/bin/bash
#
declare -i max=
declare -i min=
declare -i i=1
declare -i random
while [ $i -le 10 ]; do
	random=$RANDOM
	echo $random

	if [ $i -eq 1 ]; then
		max=$random	
		min=$max
	fi

	if [ $random -gt $max ]; then
		max=$random
	fi
	if [ $random -lt $min ]; then
		min=$random
	fi
	let i++
done

echo "max: $max"
echo "min: $min"