Shell基础教程05 控制语句

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

if语句

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

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

#!/bin/bash

if [[ 2 -gt 1 ]];then

echo "2大于1"

fi

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

第一个行的"#!/bin/bash"是告诉内核我们用bash去执行代码,每个shell脚本文件的第一行都需要加上,在以后的示例里为缩短篇幅会去掉该行。

if语句一般是用来判断“[[ ]]”里的内容是否为true,如果为true则执行if代码块里面的语句,如果为false则跳过if代码块语句。

";then"和结尾的"fi"是shell里if语句的固定写法,照着写就行。那么执行该脚本会输出"2大于1",因为"[[ ]]"里的内容是为true的。

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

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

m=9 # 假设有9元钱

if [[ $ -gt 10 ]];then

echo "中午吃3个菜"

else

echo "中午吃2个菜"

fi

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

m=1 # 假设有5元钱

if [[ $ -gt 10 ]];then

echo "中午吃3个菜"

elif [[ $ -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 $;do

echo $

done

打印出a到z:

for j in ;do

echo $

done

打印出1到10:

for n in ;do

echo $

done

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

for k in $(ls);do

echo $

done

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

while循环

m=1

while [[ $ -lt 10 ]];do

echo $

let m+=1

done

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

中断循环

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

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

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

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

for i in ;do

if [[ $ -eq 5 ]];then

continue

fi

echo $

done

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

for i in ;do

echo $

if [[ $ -eq 5 ]];then

break

fi

done

总结

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

不要太纠结语法

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

for循环的序列位置很有意思

还有case语句没写(放在函数一节写)

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180422G03MLT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券