Shell 脚本学习笔记八:流程控制
一、 if else /// 如果else分支没有语句执行,就不要写这个else
1、if 语句
if condition
then
command1
command2
command3
...
fi
/// 写成一行:
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
2、if else
if condition
then
command1
command2
...
else
command
fi
#!/bin/bash num1=100; num2=100; if test $[num1] -eq $[num2] then echo "两个数相等"; else echo "两个数不相等"; fi 输出以下结果: 两个数相等
3、if else-if else
if condition
then
command1
command2
elif condition
then
command
else
command
fi
#!/bin/bash a=10 b=20 if [ $a == $b ] then echo "a 等于 b" elif [ $a -gt $b ] then echo "a 大于 b" elif [ $a -lt $b ] then echo "a 小于 b" else echo "没有符合的条件" fi 输出以下结果: a 小于 b
二、for 循环
for var in item1 item2 ... itemN
do
command1
command2
...
done
/// 写成一行
for var in item1 item2 ... itemN; do command1; command2; ... done;
#!/bin/bash for loop in 1 2 3 4 5 do echo "$loop"; done 输出以下结果: 1 2 3 4 5 for str in "This is a string" do echo "$str"; done 输出以下结果: This is a string
三、while 语句
while condition
do
command1
done
while [ $cnt -le 5 ] do echo $cnt let "cnt++" done echo "按下 <CTRL-D> 退出"
while循环可用于读取键盘信息。下面的例子中,输入信息被设置为变量FILM,按<Ctrl-D>结束循环
echo "按下 <CTRL-D> 退出"
echo -n "输入你最喜欢的电影名:"
while read FILM
do
echo "是的!$FILM 是一部好电影"
done
四、无限循环
1、
while :
do
command
done
2、
while true
do
command
done
3、
for (( ; ; ))
五、until 循环
- until循环执行一系列命令直至条件为真时停止
- until循环与while循环在处理方式上刚好相反
- 条件可为任意测试条件,测试发生在循环末尾,因此循环至少执行一次
- 一般while循环优于until循环,但在某些时候—也只是极少数情况下,until循环更加有用
until condition
do
command
done
六、case
case 值 in
模式1)
command1
command2
...
;;
模式2)
command1
command2
...
;;
esac
#!/bin/bash echo "输入 1 到 4 之间的数字" echo "你输入的数字为:" read aNum case $aNum in 1) echo "你选择了 1" ;; 2) echo "你选择了 2" ;; 3) echo "你选择了 3" ;; 4) echo "你选择了 4" ;; esac
七、break
跳出所有循环(终止执行后面的所有循环)
while : do echo -n "请输入 1 到 5 之间的数字:" read aNum
case $aNum in 1|2|3|4|5) echo "你输入的数字为: $aNum" ;; *) echo "你输入的数字不是 1 到 5 之间的!结束游戏" break ;; esac done
八、continue
跳出本次循环
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 2025成都.NET开发者Connect圆满结束
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络