shell脚本_if条件判断与for循环结构讲解与示例

一、. if 条件判断

1.基本语法

2.示例:判断数字大小

3.条件测试操作符

二、for 循环

1.语法一:列表遍历

1.1示例:遍历一个列表

2.语法二:数字范围遍历

3.语法三:C 风格 for 循环

3.1示例:C 风格 for 循环

三、 if 和 for 循环结合

1.示例:判断文件是否大于 1MB

2. 综合实例

3.总结

结语


学习视频泷羽sec

shell(6)if条件判断与for循环结构_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1ZwSMY7EG7/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=0e1eb78c133fc5f90cf3666ebd4c1a64


 

 

下面我会详细讲解在 Shell 脚本中如何使用 if 条件判断和 for 循环,逐步解析它们的原理和用法。


一、. if 条件判断

if 条件判断语句用于根据某个条件判断结果(真假)来决定是否执行某段代码。其基本语法如下:

1.基本语法

if 条件; then
    # 条件为真时执行的命令
elif 其他条件; then
    # 另一个条件为真时执行的命令
else
    # 如果所有条件都不为真时执行的命令
fi
  • if 后面跟的是条件。条件可以是任何可以产生真或假的表达式。

  • then 后面跟着在条件为真时要执行的命令。

  • elif 是“else if”的缩写,表示如果第一个条件不成立,继续判断另一个条件。

  • else 是可选的,用于当所有条件都不成立时执行的代码块。

  • fi 用来结束 if 语句。

if 条件判断语句是 Shell 脚本中最常用的控制结构之一,用于根据特定条件的真假来决定是否执行某段代码。if 语句的基本结构包括 ifthenelifelsefi,帮助我们根据条件判断选择性地执行代码。

 

2.示例:判断数字大小

假设你有一个数字,你希望根据该数字的大小来输出不同的消息。

#!/bin/bash
​
number=10  # 定义一个变量 number
​
if [ $number -gt 5 ]; then  # 判断 number 是否大于 5
    echo "number 大于 5"  # 如果是,输出 "number 大于 5"
elif [ $number -eq 5 ]; then  # 如果 number 等于 5
    echo "number 等于 5"  # 输出 "number 等于 5"
else  # 如果上述条件都不成立,即 number 小于 5
    echo "number 小于 5"  # 输出 "number 小于 5"
fi
  • [ $number -gt 5 ] 这个条件表示:number 是否大于 5。-gt 是“greater than”(大于)的意思。

  • [ $number -eq 5 ] 这个条件表示:number 是否等于 5。-eq 是“equal”(等于)的意思。

  • 如果条件成立,执行 then 后面的代码块;如果条件不成立,继续检查 elifelse 后的条件。

通过 if 语句,可以轻松地判断一个数字是大于、等于还是小于某个值。我们使用条件表达式如 -gt-eq-lt 等,来进行数值的比较,并根据条件执行不同的操作。

 

3.条件测试操作符

在 Bash 中,可以使用多种条件测试操作符来进行比较:

  • -eq:等于(equal)

  • -ne:不等于(not equal)

  • -gt:大于(greater than)

  • -lt:小于(less than)

  • -ge:大于或等于(greater than or equal to)

  • -le:小于或等于(less than or equal to)

还可以用于字符串的比较:

  • =:判断两个字符串是否相等。

  • !=:判断两个字符串是否不等。

Bash 提供了丰富的条件测试操作符,包括数值比较操作符(如 -gt-lt)、字符串比较操作符(如 =!=)等。掌握这些操作符是有效使用 if 语句的关键,它们允许我们进行各种条件判断。


 

 

 

二、for 循环

for 循环用于遍历一组值、列表或范围。通过 for 循环可以对每个值执行某段代码。for 循环有两种常见的写法:列表遍历范围遍历

1.语法一:列表遍历

for 变量 in 值1 值2 值3 ...; do
    # 执行的命令
done

for 循环可以遍历一个预定义的值列表,每次迭代时,循环变量会依次取得列表中的一个值。这个结构非常适合用于操作固定集合中的每个元素。

1.1示例:遍历一个列表

#!/bin/bash
​
for fruit in apple banana orange; do
    echo "I like $fruit"  # 输出 "I like apple" "I like banana" "I like orange"
done
  • fruit 是循环变量,每次循环会赋值为列表中的一个元素(apple, banana, orange)。

  • 每次循环,echo "I like $fruit" 都会打印出当前水果的名称。

通过 for 循环遍历一个水果列表或其他类型的集合,可以对每个元素执行相同的操作。此语法简洁且易于理解,是最常用的循环结构之一。

 

2.语法二:数字范围遍历

Bash 允许使用 {} 来生成一个数字范围,for 循环会按顺序遍历这些数字。

for i in {1..5}; do
    echo "Number: $i"
done
  • {1..5} 是一个范围,它会生成一个从 1 到 5 的整数序列。

  • 每次循环,i 会依次取值 1, 2, 3, 4, 5。

使用 for 循环的数字范围遍历语法,可以生成一个从某个起始值到结束值的整数序列。配合 {} 语法,可以在 Bash 中轻松实现从 1 到 5、从 1 到 100 等不同范围的遍历。

 

3.语法三:C 风格 for 循环

Bash 还支持类似 C 语言的 for 循环语法:

for ((初始化; 条件; 更新)); do
    # 执行的命令
done

Bash 也支持类似 C 语言的 for 循环语法,它允许你在循环内部更灵活地控制初始化、条件判断和更新操作。这个语法结构适用于复杂的循环控制,特别是当你需要对变量进行更精确的控制时。

 

3.1示例:C 风格 for 循环

#!/bin/bash
​
for ((i=1; i<=5; i++)); do
    echo "Number: $i"
done
  • i=1 是初始化,表示从 1 开始。

  • i<=5 是循环的条件,表示循环会一直执行,直到 i 大于 5。

  • i++ 是更新表达式,表示每次循环结束时,i 会增加 1。

for 循环通过初始化、判断条件和更新语句三个部分,能够提供更加细致的循环控制。它与传统的 for 循环相比,提供了更大的灵活性。


 

 

三、 iffor 循环结合

你可以在 for 循环内部使用 if 条件判断来处理每个值。

1.示例:判断文件是否大于 1MB

假设你有一个目录,其中包含多个 .txt 文件,你希望判断每个文件的大小是否超过 1MB。

#!/bin/bash
​
for file in *.txt; do  # 遍历所有 .txt 文件
    if [ -f "$file" ]; then  # 判断是否为文件(排除目录)
        filesize=$(stat -c %s "$file")  # 获取文件的大小,单位为字节
        if [ $filesize -gt 1048576 ]; then  # 1048576 字节等于 1MB
            echo "$file 文件大小超过 1MB"
        else
            echo "$file 文件大小小于 1MB"
        fi
    fi
done
  • for file in *.txt:遍历当前目录下所有的 .txt 文件。

  • if [ -f "$file" ]:判断文件是否存在且为普通文件。-f 判断是否为普通文件。

  • stat -c %s "$file":获取文件的字节大小,%sstat 命令的格式控制符,用来返回文件的大小。

  • -gt 1048576:判断文件大小是否大于 1MB(1MB = 1048576 字节)。

iffor 循环的结合非常常见,尤其在处理多个文件或多个数据项时。我们可以遍历一个目录中的所有文件,并使用 if 判断每个文件的大小是否超过 1MB。如果条件成立,执行某些操作。

 

2. 综合实例

假设你有一个数字列表,需要遍历这个列表并检查每个数字是否为偶数或奇数。

#!/bin/bash
​
numbers=(2 3 5 6 8 11)  # 定义一个数字数组
​
for number in "${numbers[@]}"; do  # 遍历数字数组
    if [ $((number % 2)) -eq 0 ]; then  # 判断数字是否是偶数
        echo "$number 是偶数"
    else
        echo "$number 是奇数"
    fi
done
  • numbers=(2 3 5 6 8 11):定义一个数字数组。

  • "${numbers[@]}":表示数组中的所有元素。

  • ((number % 2)):这是算术表达式,计算 number 除以 2 的余数。

  • -eq 0:判断余数是否为 0,如果是,表示数字是偶数,否则是奇数。

结合 iffor 循环,可以解决更复杂的任务。遍历一个数字数组并判断每个数字是奇数还是偶数。通过这种方式,我们能够同时利用条件判断和循环控制,解决多步骤的问题。


 

3.总结

  • if 语句用于条件判断,根据条件的真假来执行不同的代码块。

  • for 循环用于遍历一组值、数字或列表,并对每个元素执行特定的操作。

  • 通过结合使用 iffor 循环,可以实现复杂的逻辑判断和批量处理任务。

 

 

 

结语

在 Bash 脚本中,if 条件判断for 循环是最常用的控制结构,它们能够帮助我们根据不同的条件执行代码和遍历数据。掌握这两种基本语法,能够让你在编写 Shell 脚本时更加高效、灵活。

  • if 语句让我们能够根据条件判断来决定代码的执行路径。通过灵活运用条件操作符,可以处理多种不同的情况。

  • for 循环则允许我们方便地遍历集合、数组或数字范围,批量执行相同的操作,节省大量重复代码的编写。

结合使用这两种结构,能让我们在处理复杂任务时变得更加得心应手。不论是文件处理、数据筛选还是逻辑判断,这些基础语法为你提供了强大的工具,能够轻松应对各种脚本需求。

希望通过这些详细的解释和示例,能够帮助你更好地理解和使用 Shell 脚本中的 iffor 控制结构!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值