shell脚本for循环、while循环、until循环
1.
指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互
的情况下实现相当复杂的文本操作,被广泛应用于 Shell 脚本,完成各种自动化配置任务。
工作原理:
前面提到 sed 命令常用于一整行的处理,而 awk 比较倾向于将一行分成多个“字段”然后再进行处理,且默认情况下字段的分隔符为空格或 tab 键。awk 执行结果可以通过 print 的功能将字段数据打印显示。
命令:awk 选项 模式 处理的动作
-F 指定分隔符
-v 自定义变量
-f 脚本
1.1print动作
1.2
-
-
OFS:输出时的分隔符
-
NF:当前处理的行的字段个数
-
NR:当前处理的行的行号(序数)
-
$0:当前处理的行的整行内容
-
$n:当前处理行的第n个字段(第n列)
-
FILENAME:被处理的文件名
-
2.
for是用于已知循环次数的脚本命令
格式: for (变量) in (次数);do (循环的事件);done(结束)
当使用c语言格式表示的时候:for (( 表达式1; 表达式2; 表达式3 )); do 命令; done
例子:
一加到十,连加
十以内的偶数相加
用for编写99乘法表
2.while和until
while和until与for相比
for需要知道循环次数,while和until只知道停止条件,不知道次数,直到达到条件就会退出,注意需要退出命令,不然会进入死循环。
命令格式:
while
当命令判断为假时停止
until
当命令判断为真时停止
#!/bin/bash
数值
while [ 条件 ] 条件为真是do 假时done
do
done
echo
例子,用while求100以内数字相加
批量建立用户
双重循环及跳出循环
-
-
- exit直接退出脚本
菜单
WORDS 变量被展开,生成一个词的列表。展开的词集合被打 在标准错误输出设备上,每个以一个数字做前缀。如果没有 `in WORDS'则假定使用`in "$@"'。PS3提示符会被显示并且从标准输入读入一行 如果该行由被显示的词对应的数字组成,则 NAME 变量被设定为相应的词。如果行为空,则 WORDS 变量和提示符被重新显示。如果读取了文件结束符,则命令完成。读入任何其他的值会导致 NAME 变量被设定为空。读入的行被存放在变量 REPLY 中。COMMANDS 命令在每次选择之后执行直到执行一个 break 命令。
命令格式:
select: select NAME [in 词语 ... ;] do 命令; done
从列表中选取词并且执行命令。
例子:
点菜菜单
#!/bin/bash
sum=0
PS3="请输入(1-6):"
MENU="
宫保鸡丁
酸菜鱼
鱼香肉丝
佛跳墙
水煮肉片
点菜结束
"
select menu in $MENU
do
case $REPLY in
1)
echo $menu 价格是20
let sum+=20
;;
2)
echo $menu 价格是60
let sum+=60
;;
3)
echo $menu 价格是25
let sum+=25
;;
4)
echo $menu 价格是150
let sum+=150
;;
5)
echo $menu 价格是60
let sum+=60
;;
6)
echo "点菜结束"
break
;;
*)
echo "点菜错误,请重新选择"
;;
esac
done
echo "总价是$sum"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了