Shell基础教程05 控制语句

站长QQ群

用于技术交流、投稿、商务合作 站长唯一QQ:528482275 站长唯一QQ群:649978721

IT运维技术交流

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

有控制语句才能称的上叫程序

 

if语句


 

从现在开始我们就要在*.sh文件里写代码了,不再写用命令堆叠起来的脚本。

 

自己创建个sh文件吧,输入以下代码:

#!/bin/bashif [[ 2 -gt 1 ]];then        echo "2大于1"fi

保存退出后执行脚本看看有什么输出?解释一下:

 

  1. 第一个行的"#!/bin/bash"是告诉内核我们用bash去执行代码,每个shell脚本文件的第一行都需要加上,在以后的示例里为缩短篇幅会去掉该行。
  2. if语句一般是用来判断“[[ ]]”里的内容是否为true,如果为true则执行if代码块里面的语句,如果为false则跳过if代码块语句。
  3. ";then"和结尾的"fi"是shell里if语句的固定写法,照着写就行。那么执行该脚本会输出"2大于1",因为"[[ ]]"里的内容是为true的。

 

还记得"[[ ]]"怎么用吗?请翻看运算一节

 

在进行条件判断的时候只有if往往是不够的,例如,中午吃饭身上的钱大于10元吃3个菜,否则吃两个菜。

m=9    # 假设有9元钱if [[ ${m} -gt 10 ]];then        echo "中午吃3个菜"else        echo "中午吃2个菜"fi

 

"else"的意思是当"[[ ]]"里的判断不成里时就执行"else"代码块里面的语句,9不大于10所以输出“中午吃两个菜”,但这样不够严谨,如果只带了1元钱也会输出“中午吃两个菜”,那我们继续改下代码。

m=1   # 假设有5元钱if [[ ${m} -gt 10 ]];then        echo "中午吃3个菜"elif [[ ${m} -gt 8 ]];then        echo "中午吃2个菜"else        echo "中午没饭吃"fi

 

上面代码多了"elif"这行,当"if"这行"[[ ]]"里的条件不成立时再用"elif"这行"[[ ]]"里的条件判断一次,如果成里则执行elif代码块里的语句。当"if"和"elif "[[ ]]"里的条件都不成立时则执行else代码块里的语句。

 

另外if是可以嵌套使用的,聪明的你还不试下!

 

for循环


 

for循环需要预先设好循环的次数

 

基本语法:

for 元素 in 序列;do    语句块done

 

shell里的for循环在序列这个位置比较有意思,看几个栗子。

 

打印出a,b,c,d,e:

n="a, b, c, d, e"for i in ${n};do        echo ${i}done

 

打印出a到z:

for j in {a..z};do        echo ${j}done

 

打印出1到10:

for n in {1..10};do        echo ${n}done

 

打印出当前目录里的文件和目录:

for k in $(ls);do        echo ${k}done

 

通过上面这几个栗子可以看出shell里的for循环很好用,语法就是这个结构了,不要太纠结。

 

while循环


 

m=1while [[ ${m} -lt 10 ]];do        echo ${m}        let m+=1done

当"[[ ]]"里的条件不成立时就跳出循环

 

中断循环


 

中断循环有以下两种情况:

 

1、continue

在循环过程中遇到continue语句时将跳过本次循环进入到下一次循环。

2、break

在循环过程中遇到break语句将停止整个循环

 

for循环结合continue打印出1到10除了5的所有数:

for i in {1..10};do        if [[ ${i} -eq 5 ]];then                continue        fi        echo ${i}done

 

for循环结合break在打印1到10的过程中如果到5的时候停止整个循环:

for i in {1..10};do        echo ${i}        if [[ ${i} -eq 5 ]];then                break        fidone

 

总结


 

  • 有控制语句才能称的上叫程序
  • 不要太纠结语法
  • while循环当"[[ ]]"里的条件不成立时就跳出循环
  • for循环的序列位置很有意思
  • 还有case语句没写(放在函数一节写)

未经允许不得转载:作者:小牛, 转载或复制请以 超链接形式 并注明出处 小牛博客
原文地址:《Shell基础教程05 控制语句》 发布于2019-06-19

分享到:
赞(0) 打赏

评论 抢沙发

6 + 6 =


Shell基础教程05 控制语句

长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

网站公告

开启新征程,加油少年。 2019-10-6

开启新征程,加油少年。

不知不觉,都十月多了,即将面临找工作的我来说是尤为重要的,

不管怎么说,十月加油吧。

我已阅读
Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册