如何在 Shell 脚本中实现条件判断和循环?

在 Shell 脚本中,条件判断和循环是非常重要的控制结构,它们能让脚本根据不同情况执行不同操作,或者重复执行某些任务。下面详细介绍在 Shell 脚本中实现条件判断和循环的方法。

条件判断

在 Shell 脚本里,常用 if-else 语句来进行条件判断,有几种不同的形式。

1. 简单的 if 语句

#!/bin/bash

num=10
if [ $num -gt 5 ]; then
    echo "数字 $num 大于 5"
fi

解释:
  • #!/bin/bash:指定脚本使用的解释器为 Bash。
  • [ $num -gt 5 ]:这是条件判断部分,-gt 是比较运算符,表示 “大于”。
  • fi:用于结束 if 语句块。

2. if-else 语句

#!/bin/bash

num=3
if [ $num -gt 5 ]; then
    echo "数字 $num 大于 5"
else
    echo "数字 $num 小于或等于 5"
fi

解释:当 if 语句中的条件不满足时,会执行 else 语句块中的内容。

3. if-elif-else 语句

#!/bin/bash

num=5
if [ $num -gt 5 ]; then
    echo "数字 $num 大于 5"
elif [ $num -eq 5 ]; then
    echo "数字 $num 等于 5"
else
    echo "数字 $num 小于 5"
fi

解释:elif 用于在 if 条件不满足时进行额外的条件判断,可根据需要添加多个 elif 语句。

循环

Shell 脚本支持多种循环结构,如 for 循环、while 循环和 until 循环。

1. for 循环

#!/bin/bash

for i in 1 2 3 4 5; do
    echo "当前数字是 $i"
done

解释:
  • for i in 1 2 3 4 5i 是循环变量,会依次取列表中的值。
  • done:用于结束 for 循环。

也可以使用 {start..end} 这种形式来简化范围表示:
#!/bin/bash

for i in {1..5}; do
    echo "当前数字是 $i"
done

2. while 循环

#!/bin/bash

num=1
while [ $num -le 5 ]; do
    echo "当前数字是 $num"
    num=$((num + 1))
done

解释:
  • while [ $num -le 5 ]:只要条件 $num -le 5(即 $num 小于等于 5)成立,就会一直执行循环体。
  • num=$((num + 1)):用于更新循环变量 num 的值。

3. until 循环

#!/bin/bash

num=1
until [ $num -gt 5 ]; do
    echo "当前数字是 $num"
    num=$((num + 1))
done

解释:until 循环与 while 循环相反,只要条件不成立,就会一直执行循环体,直到条件成立为止。

综合示例

下面是一个结合条件判断和循环的示例,用于找出 1 到 10 之间的偶数:
#!/bin/bash

for i in {1..10}; do
    if [ $((i % 2)) -eq 0 ]; then
        echo "$i 是偶数"
    fi
done

解释:
  • for i in {1..10}:循环变量 i 从 1 到 10 依次取值。
  • if [ $((i % 2)) -eq 0 ]:使用取模运算符 % 判断 i 是否为偶数,如果余数为 0,则执行 echo 语句输出该偶数。

posted on 2025-02-08 10:34  数据库那些事儿  阅读(11)  评论(0编辑  收藏  举报