Linux系统Shell脚本第三章:for、while循环及脚本实操

一、for循环

用于已知循环次数的场景

1、基本格式

for 变量名称(注意是名称不是变量$等) in 名称范围 (可以不写)

do

执行内容 若满足循环则做什么动作

done for循环结束标志

复制代码
举例:
vim  a.sh               #创建脚本a.sh
脚本内容:
#!/bin/bash
for  i   in  {1..5}    #for循环10次,第一次i=1,第二次i=2以此类推直到i=5
do
echo "$i"               #循环动作,每次输出$i 
done                    #for语句结束标志
bash  a.sh              #调用shell执行脚本a.sh
执行结果:
1
2
3
4
5

、类C语言格式

for (( 表达式1 ;表达式2;表达式3 ))

do

执行内容 若满足循环则做什么动作

done for循环结束标志

表达式1:定义变量并赋值

表达式2:决定是否循环

表达式3:决定循环变量如何改变,决定循环什么时候结束

复制代码
举例:
vim a.sh                
脚本内容:
#!/bin/bash
for(( i=0;i<=5;i++ ))     #定义for循环i变量初始值为0,循环条件i小于等于5,每循环一次i自加1
do
echo "$i"                 #for循环每循环一次执行一次输出$i
done                      #for语句结束标志
bash a.sh                 #调用shell执行脚本
输出结果:
0
1
2
3
4
5

shell中读取文本文件中的内容做变量

并使用空格或换行符分隔每一行。for循环将字符串中的每一行读取到一数组中

复制代码
[root@hadoop01 ~]# more test.txt
1
0
2
[root@hadoop01 ~]# more test.sh
#!/bin/bash

for line in `cat test.txt`
do
   echo ${line}
done
[root@hadoop01 ~]#
[root@hadoop01 ~]# sh test.sh
1
0
2
[root@hadoop01 ~]#

补充

shell中的单引号和双引号的区别

结论:单引号中的字符串不会做任何处理

双引号中的字符串会做处理,如处理转义字符(\n)

复制代码
[root@hadoop01 ~]# var1="\\n"  #使用双引号
[root@hadoop01 ~]# var2='\\n'  #使用单引号
[root@hadoop01 ~]# echo ${var1}   
\n    #处理了转义
[root@hadoop01 ~]# echo ${var2}
\\n  #没有处理转义
[root@hadoop01 ~]#

即,如果希望字符串不做任何编号,则使用单引号即可。

shell中的变量加大括号和不加的区别

复制代码
[root@hadoop01 ~]# var1='\\n'
[root@hadoop01 ~]# echo $var1vv
            #注意,此处输出为空
[root@hadoop01 ~]# echo ${var1}vv
\\nvv      #此处才是字符串进行了拼接
[root@hadoop01 ~]#

Linux系统Shell脚本第三章:for、while循环及脚本实操_linux脚本for循环_asddASD323432的博客-CSDN博客

shell中的数组、循环等基本用法和注意事项-CSDN博客

相关推荐
wuminyu3 小时前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
海宇AI4 小时前
零信任架构实战:基于海宇个人风险报告构建自动化分期商城信用额度初审网关
运维·人工智能·架构·自动化
IMPYLH4 小时前
Linux 的时间为什么会被拨回去
linux·运维·服务器
2601_963282775 小时前
寒地窄带通信工程实践:黑龙江哈尔滨对讲机选型、组网与合规运维总结
运维·服务器·网络
叼烟扛炮6 小时前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习
xbzb6 小时前
OpenStack 网络管理(理论):Linux 网络虚拟化是 Neutron 的地基
linux·服务器·网络·openstack·network·neutron
我要见SA姐17 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·数据库·机器学习·oracle·回归
Android系统攻城狮7 小时前
Linux FFmpeg深度解析之avcodec_flush_buffers调用流程与实战(十九)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频进阶
水饺编程9 小时前
第2章:Linux 基础,解压缩【.tar.bz2】压缩包文件
linux·c语言·汇编
Y3815326629 小时前
用 httpx 写 SerpBase 异步客户端:连接池与超时配置
运维·服务器·数据库