shell的控制语句(3)

 shell脚本与我们所用的c语言控制语句,是存在一些差异的,因此,我们需要重新认识并且学会它们。因此,接下来,我会介绍常用的流程控制语句 。如:if   for 、while、 case 、 until等等

一、if条件判断语句

if条件判断语句,分为三类,一类单分支if、一类双分支if、最后一类多分支if

1.1、单分支if

if [ 条件1 ];then          // 中括号里的两边必须空格, 当then与中括号同一行,必须用;分号隔开
	
   执行第一段程序
fi


另外一种写法(then与中括号不是同一行)

if [ 条件1 ]
then

  执行第一段程序
fi

简单的打分功能例子:当a的分数大于 60分时,输出  已及格 

注意: if也需要与中括号空一格 如   if  【   】

输出结果

 

1.2、双分支if

if [ 条件1 ]
	then
		条件成立时,执行这段程序
	else
		条件不成立时,执行这段程序
fi

简单的打分功能例子:当a的分数大于 60分时,输出  已及格   否则   不及格

注意:在shell1脚本,不建议用  >  >=   <  <=      而需要用 shell专属的   -gt   -eq    -lt     -le   等 

否则容易运行出错误。

输出结果:

 1.3、多分支if

if [ 条件1 ]
then
		当条件判断式1成立时,执行程序1
elif [ 条件2 ]
then
		当条件判断式2成立时,执行程序2
。。。。。。。。。
else
	当所有条件都不成立时,执行此程序
fi

例子:当a的成绩【60,70)--及格,【70,80)--B     【80,90)--A     【90,99)--A+ 低于60 —不及格

 

注意:不可用  &&   ,因为我一开始就是用&& ,报错了,改为用 -a   就成功 

输出结果

 二、case控制语句

case  $变量名称  in

 “第一个变量内容”) 
        程序段一              #不用加;分号
 ;;                           #  ;; 相当于break;
 “第二个变量内容”) 
        程序段二
 ;; 

 *) 
     其它程序段
 ;; 
 esac 

 对比c语言switch控制语句

 例子:当a的成绩【60,70)--及格,【70,80)--C    【80,90)--B     【90,99)--A   低于60 —不及格

 输出结果

 三、for循环语句

       shell的 for循环存在两种形式

3.1、第一种for形式

      与第二种相比,在shell脚本中使用较少,第二种较多

for ((初始值;循环控制条件;变量变化))    #两个括号
do
		程序              #不用加分号;结尾
done

与c语言的for循环语句不同点

 简单例子:1~100的相加运算

输出结果

 

 3.2、第二种for形式

for var in con1 con2 con3 ...
do
        程序段
done

第一次循环时,$var 的内容为 con1
第二次循环时,$var 的内容为 con2
第三次循环时,$var 的内容为 con3
......

例子:求无顺序加法运算:1 +  3  +   5  +    9  +    15    +    455  =  488

分析:第一次循环,num=1  ,第二次循环  num=3   第三次循环  num=5  直到num=455  停止 

输出结果

例子2:使用shell脚本,测试当前位置下,即 ls 下文件 是目录,还是普通文件

分析: `ls`,此功能,获取当前位置的文件信息,接着按顺序从第一个文件开始到最后一个文件

依次传给name 判断相应文件的属性

输出结果

 四、while控制语句

while [ condition ]          #有三处需要   空格
do 
      程序段
done

 例子:

 当输入 num=5 ,时,执行无限循环打印hello world

五、unitl 控制语句

until [ condition ]
do
      程序段
done

例子:

 结果输入num=5

 分析:当满足条件时,不会执行do  ---done  里面的内容,与while相反

六、break 与 continue

6.1、break

              break 命令允许跳出循环。
              break 通常在进行一些处理后退出循环或 case 语句

例子:当i = 3时,退出for循环


输出结果

6.2、continue

              continue 命令类似于 break 命令
              只有一点重要差别,它不会跳出循环,只是跳过这次循环步骤,接着运行下一次循环

例子:当i=3时,跳过此次循环,进行下一次循环

 输出结果

猜你喜欢

转载自blog.csdn.net/weixin_47783699/article/details/129179063