Linux Shell编程(三) if 和 for:从入门到实践

在Shell脚本中使用比较运算符时!根据用户输入的数字$num进行相应的判断;在for循环中可以使用break和continue语句来控制循环的执行流程。

在Linux Shell编程中,if和for是两个非常重要的控制语句,可以帮助我们实现更加复杂的逻辑和循环操作。本文将从入门到实践,详细介绍if和for语句的用法、注意事项以及一些实际案例。

if语句

if语句是一种基本的条件判断结构,在Shell脚本中经常被使用。其基本格式为:

“`

if [ 条件 ]; then

# 条件成立时执行的代码

else

# 条件不成立时执行的代码

fi

其中`[ 条件 ]`表示一个测试命令或者表达式,如果该测试命令或者表达式返回0,则认为条件成立;否则条件不成立。

下面是一个简单示例:

#!/bin/bash

age=20

if [ $age -lt 18 ]; then

echo “未成年人禁止入内!”

echo “欢迎光临!”

上述示例中,通过`-lt`运算符判断变量$age是否小于18岁。如果小于18岁,则输出“未成年人禁止入内!”;否则输出“欢迎光临!”。

需要注意的是,在Shell脚本中使用比较运算符时,需要使用`-eq`、`-ne`、`-lt`、`-le`、`-gt`和 `-ge`等运算符来进行比较。

除了基本的if语句外,还可以使用elif语句和嵌套if语句来实现更加复杂的逻辑。例如:

read -p “请输入一个数字:” num

if [ $num -eq 0 ]; then

echo “输入数字为0”

elif [ $num -lt 0 ]; then

echo “输入数字为负数”

if [ $(($num % 2)) -eq 0 ]; then

echo “输入数字为正偶数”

else

echo “输入数字为正奇数”

fi

上述示例中,根据用户输入的数字$num进行相应的判断,并输出相应信息。

for循环

for循环是一种常用的循环结构,在Shell脚本中也经常被使用。其基本格式如下:

for 变量 in 列表; do

# 循环体代码块

done

Linux Shell编程(三) if 和 for:从入门到实践

其中变量表示要遍历的变量名,列表则表示遍历范围。列表可以是数组、字符串或者命令输出结果等。

for i in {1..10}; do

echo $i

echo “循环结束!”

上述示例中,通过花括号表示列表范围,遍历数字1-10,并输出每个数字。最后输出“循环结束!”。

需要注意的是,在for循环中可以使用break和continue语句来控制循环的执行流程。例如:

if [ $(($i % 2)) -eq 0 ]; then

continue # 跳过偶数

fi

echo $i

if [ $i -eq 7 ]; then

break # 跳出循环

echo “循环结束!”

上述示例中,通过continue跳过偶数,只输出奇数;并且在$i等于7时使用break语句跳出整个循环。

实际案例

下面是一个实际案例,演示如何使用if和for语句编写简单的备份脚本。

# 备份目录路径

backup_dir=”/data/backup”

# 需要备份的文件或目录列表(多个用空格分隔)

backup_list=”/data/www /etc/nginx”

# 备份文件名前缀(以日期时间为后缀)

filename_prefix=”my_backup_$(date +%Y%m%d_%H%M%S)”

# 循环遍历需要备份的文件或目录,并打包成压缩包保存到指定目录下。

for item in ${backup_list}; do

tar czvf ${backup_dir}/${filename_prefix}_$(basename ${item}).tar.gz ${item}

done

# 如果备份成功,则输出提示信息;否则输出错误信息。

if [ $? -eq 0 ]; then

echo “备份成功!”

else

echo “备份失败!”

上述示例中,通过for循环遍历需要备份的文件或目录,并使用tar命令将其打包成压缩包保存到指定目录下。如果备份成功,则输出“备份成功!”;否则输出“备份失败!”。

本文从入门到实践,详细介绍了if和for语句的用法、注意事项以及一些实际案例。希望读者可以通过本文学习到Shell编程中基本的控制语句,并能够灵活运用它们来完成各种任务。