在 Shell 脚本中,条件判断和循环是非常重要的控制结构,它们能让脚本根据不同情况执行不同操作,或者重复执行某些任务。下面详细介绍在 Shell 脚本中实现条件判断和循环的方法。
在 Shell 脚本里,常用 if-else
语句来进行条件判断,有几种不同的形式。
#!/bin/bash
num=10
if [ $num -gt 5 ]; then
echo "数字 $num 大于 5"
fi
解释:
#!/bin/bash
:指定脚本使用的解释器为 Bash。
[ $num -gt 5 ]
:这是条件判断部分,-gt
是比较运算符,表示 “大于”。
fi
:用于结束 if
语句块。
#!/bin/bash
num=3
if [ $num -gt 5 ]; then
echo "数字 $num 大于 5"
else
echo "数字 $num 小于或等于 5"
fi
解释:当 if
语句中的条件不满足时,会执行 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
循环。
#!/bin/bash
for i in 1 2 3 4 5; do
echo "当前数字是 $i"
done
解释:
for i in 1 2 3 4 5
:i
是循环变量,会依次取列表中的值。
done
:用于结束 for
循环。
也可以使用 {start..end}
这种形式来简化范围表示:
#!/bin/bash
for i in {1..5}; do
echo "当前数字是 $i"
done
#!/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
的值。
#!/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
语句输出该偶数。