有控制语句才能称的上叫程序
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语句没写(放在函数一节写)
领取专属 10元无门槛券
私享最新 技术干货