Shell循环语句

Shell 循环控制语句

1、if格式

a、脚本格式

#!/bin/bash
###本脚本主要是练习20190909
###本脚本主要是用于if循环语句;
###判断批量执行的参数是否为空;
if [ ! $1 ]
then
	echo "********批量执行格式:sh $0 BatchTask_1"
	break
fi
###判断批量执行的参数是否等于BatchTask_1
canshu=BatchTask_1
if test $1 = $canshu
then
	sh start.sh $1
else
	echo "*********批量执行的参数不正确,请参数以下批量执行格式!"
	echo "*********批量执行格式:sh $0 BatchTask_1"
	break
fi

b、命令行格式:

if [ $(ps -ef |grep -c "ssh") -ge 1 ];then echo last >>/home/log/1/last_log.sh;fi

2、if else

#!/bin/bash
###判断批量执行的参数是否等于BatchTask_1
canshu=BatchTask_1
if test $1 = $canshu
then
	sh start.sh $1
else
	echo "*********批量执行的参数不正确,请参数以下批量执行格式!"
	echo "*********批量执行格式:sh $0 BatchTask_1"
	break
fi

3、if elif else

#!/bin/bash
###本脚本写于20190909
if test $1 = M
then
	echo "这是个男的!"
elif test $1 = F
then
	echo "这是个女的!"
else
	echo "性别不详,有待考究!"
fi

4、for循环;

a、脚本格式:

#!/bin/bash
###本脚本主要用于联系for循环
###本脚本写于20190909
for i in 1 2 3 4 5
do
	echo "这是$i次循环!"
done

b、命令行格式:

for i in 1 2 3 4 5;do echo "这是$i次循环!";done;

5、while循环

while循环用于不断循环执行以系列命令,也用于从输入文件中读取数据,命令通常为测试条件;

#!/bin/bash
###本脚本主要用于练习while循环;
###本脚本写于20190909;
int=1
while(( $int<=5 ))
do
	res=`expr $int \* $int`
	echo "$int * $int等于$res"
	let "$int++"
done
	

a、while循环的test

#!/bin/bash
###本脚本写于20190910
###本脚本主要用于while循环test;
echo "===========>>按下Ctrl+d退出脚本运行!!!"
echo -e -n "请输入你想输入的名字:\n"
while read res
do
	echo "$res is a little caiji!!!"
done

b、无限循环

#!/bin/bash
###无限循环
int=1
while true
do
	echo "$int"
	let "int++"
done

###命令行格式;
while true;do echo "true";done;

6、until循环

until循环执行一系列命令直至条件为true时停止;

until循环与while循环处理方式上恰好相反,判断条件返回值为false,则继续执行循环体内的语句,否则跳出循环;

#!/bin/bash
###本脚本主要用于until循环语句;
###本脚本写于20190910;
echo "输出打印小于特定数字的所有整数"
if [ ! $1 ]
then
	echo "=======>>脚本执行格式:sh $0 参数1"
	break
fi
int=0
until [ $int -gt $1 ]
do
	echo $int
	let "int++"
done

7、case

shell case语句为多选择语句,可以用case语句匹配一个值与一个模式,如果匹配成功,执行相应的命令。

#!/bin/bash
###本脚本主要用于练习case
###本脚本写于20190910
if [ ! $1 ]
then
	echo "========执行脚本命令格式错误========="
	echo "========执行格式为:sh start.sh 参数"
	break
else
	case $1 in
	BatchTasck_WZ)
		sh start.sh BatchTasck_WZ
		echo "正在执行的批量为:sh start.sh BatchTasck_WZ"
		;;
	BatchTasck_MS)
		sh start.sh BatchTasck_MS
		echo "正在执行的批量为:sh start.sh BatchTasck_MS"
		;;
	BatchTasck_HK)
		sh start.sh BatchTasck_HK
		echo "正在执行的批量为:sh start.sh BatchTasck_HZ"
		;;
	BatchTasck_ZA)
		sh start.sh BatchTasck_ZA
		echo "正在执行的批量为:sh start.sh BatchTasck_ZA"
		;;
	*)
		echo "=================>>MS的批量脚本参数为:BatchTask_MS"
		echo "=================>>WZ的批量脚本参数为:BatchTask_WZ"
		echo "=================>>HK的批量脚本参数为:BatchTask_HK"
		echo "=================>>ZA的批量脚本参数为:BatchTask_ZA"
		;;
	esac
fi

8、跳出循环

在循环过程中,有时候需要在未达到循环结束条件的时候跳出循环,有两个命令可以实现该功能:break和continue;

a、break

break允许跳出所有循环(终止执行后面所有的循环)

#!/bin/bash
###本脚本主要用于练习break命令;
###本脚本写于20190910
if [ ! $1 ]
then
	echo "==========>>本脚本执行的格式为:sh $0 参数1"
	echo "==========>>参数1为字符格式"
	break
else
	if test $1 = 毛
	then
		echo "==========>>这可不是随便玩的!!"
		break
	else
		echo "来了$1老弟!!"
	fi
fi

		

b、continue

continue命令与break命令类似,只有一点差别,他不会跳出所有循环,仅仅跳出当前循环;

#!/bin/bash
###本脚本主要是用于练习continue命令;
###本脚本写于20190910
while true
do
	echo -e -n "请输入你想要输入的姓名:\n"
	read name
	if [ ! $name ]
	then
		continue
	else
		if test $name = 毛
		then
			echo "==========>>这可不是随便玩的!!"
			continue
		else
			echo "来了$1老弟!!"
			sleep 5
		fi
	fi
done

	

  

 

猜你喜欢

转载自www.cnblogs.com/tengjiang/p/11493869.html