声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)
1. if 语句
if 语句语法格式:
if condition
then
command1
command2
...
commandN
fi
写成一行(适用于终端命令提示符):
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
末尾的 fi 就是 if 倒过来拼写
if [ condition ]; then
如果条件为真执行的命令
elif [ condition ]; then
如果第一个条件不成立,且第二个条件成立执行的命令
else
如果所有条件都不成立执行的命令
fi
- if后面的条件一般是通过 [ ] 来表示,条件里面的内容可以是比较操作符、逻辑判断等。
- elif是可选的,用来处理多个条件。
- else是可选的,表示默认情况。
实例一, if-elif-else 语句
#!/bin/bash
输入一个数字
echo "请输入一个数字:"
read num
判断数字的大小
if [ $num -gt 0 ]; then
echo "你输入的是正数"
elif [ $num -lt 0 ]; then
echo "你输入的是负数"
else
echo "你输入的是零"
fi
脚本解释:
- read num 用来从用户输入获取一个数字。
- if [ $num -gt 0 ] 用来判断数字是否大于零。
- elif [ $num -lt 0 ] 用来判断数字是否小于零。
- else 表示如果数字既不大于零也不小于零(即为零),则执行该部分的命令。
运行该脚本:
- 将脚本保存到一个文件(如 check_number.sh)。
- 给脚本执行权限:chmod +x check_number.sh
- 运行脚本:./check_number.sh
它会根据用户输入的数字输出相应的提示信息。如果输入的是正数、负数或零,会打印不同的消息。
2 ,for 循环
与其他编程语言类似,Shell支持for循环。for 循环是编程中常用的控制结构之一,用于重复执行一段代码直到满足某个条件。在 Bash 脚本中,for 循环有多种写法,灵活性很高,可以通过遍历数字、数组或文件等来执行任务。
for循环一般格式为:
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
写成一行:
for var in item1 item2 ... itemN; do command1; command2... done;
示例 1:遍历一个数字序列
#!/bin/bash
遍历1到5的数字
for i in {1..5}; do
echo "当前数字是: $i"
done
解释:
- {1..5} 表示数字从 1 到 5,for 循环会依次取出这些数字并执行循环体内的命令。
示例 2:遍历一个数组
#!/bin/bash
定义一个数组
fruits=("苹果" "香蕉" "橙子" "葡萄")
遍历数组
for fruit in "${fruits[@]}"; do
echo "水果: $fruit"
done
解释:
- ${fruits[@]} 用于获取数组 fruits 中的所有元素。
- for fruit in "${fruits[@]}" 会依次将数组中的每个元素赋给变量 fruit,并在每次循环时执行循环体内的命令。
示例 3:通过 for 循环读取文件内容
#!/bin/bash
假设文件 "file.txt" 存在
for line in $(cat file.txt); do
echo "读取到的行: $line"
done
解释:
- cat file.txt 会输出文件 file.txt 的所有内容,for line in $(cat file.txt) 会遍历文件中的每一行。
示例 4:指定步长的 for 循环
#!/bin/bash
从1到10,每次增加2
for i in {1..10..2}; do
echo "当前数字是: $i"
done
解释:
- {1..10..2} 表示从 1 到 10,每次增加 2。这个语法可以控制步长。
示例 5:C语言风格的 for 循环
#!/bin/bash
传统的C语言风格的for循环
for ((i=1; i<=5; i++)); do
echo "当前数字是: $i"
done
解释:
- ((i=1; i<=5; i++)) 是一种更接近 C 语言风格的 for 循环语法。
- i=1 初始化 i 为 1。
- i<=5 判断条件:如果 i 小于或等于 5,则继续循环。
- i++ 每次循环后,i 增加 1。
在编程中,循环体 和循环语句是构成循环结构的两个重要部分。它们共同工作,使得程序能够重复执行某些操作,直到满足特定的条件。为了更清晰地理解它们的关系,我们可以从概念和实际代码结构两方面进行详细解释。
1. 循环语句(Loop Statement)
循环语句是控制程序执行流程的一种语句,它会导致一段代码反复执行。循环语句会根据给定的条件判断是否继续执行某些操作。常见的循环语句有:
- for 循环:适用于已知迭代次数的情况。
- while 循环:适用于基于条件判断是否继续执行的情况。
- until 循环:与 while 循环类似,但它是当条件不成立时继续执行,直到条件成立为止。
基本循环结构:
一般语法结构:
for variable in list; do
循环体
done
解释:
- for variable in list: 这是循环语句的条件部分,指定循环变量以及要遍历的列表。
- do: do 后面跟的是循环体,它会在每次迭代时执行。
- done: done 标记循环的结束。
2. 循环体(Loop Body)
循环体是循环语句的内部部分,是每次循环迭代时实际执行的代码。在 for、while 或 until 循环中,循环体会在每次迭代时被执行。循环体可以包含任意数量的语句,这些语句将根据循环控制条件重复执行。
解释:
- 循环体的内容:可以是简单的命令、条件判断、变量更新等,具体取决于你希望在每次迭代中完成什么任务。
- 循环体的作用:是执行具体的操作,通常是对某些数据进行处理或执行某些任务。
3. for 循环中的循环体和循环语句
示例:for 循环
for i in 1 2 3 4 5; do
echo "当前数字是: $i" # 这是循环体
done
解释:
- for i in 1 2 3 4 5: 这是循环语句的部分,表示从 1 到 5 遍历。
- echo "当前数字是: $i": 这是循环体部分。每次循环时,都会输出当前的数字。
在此例中:
- for 是循环语句。
- echo 命令是循环体。