当前位置:首页 > 服务器技术 > 正文

掌握Linux Shell条件判断(从零开始写智能脚本)

在 Linux 系统中,Shell 脚本是自动化任务的利器。而要让脚本“聪明”起来,能够根据不同情况做出不同反应,就必须学会使用条件判断。本文将手把手教你如何在 Shell 脚本中使用条件语句,即使是完全没接触过编程的小白也能轻松上手!

掌握Linux Shell条件判断(从零开始写智能脚本) Linux Shell条件判断 Shell脚本教程 if语句使用 bash条件表达式 第1张

什么是 Shell 条件判断?

简单来说,条件判断就是让脚本能“思考”。比如:如果文件存在,就执行 A;否则,执行 B。这种逻辑控制在 Shell 中主要通过 if 语句实现。

基本语法结构

Shell 中最常用的条件判断结构如下:

if [ 条件 ]then    # 条件为真时执行的命令elif [ 其他条件 ]then    # 其他条件为真时执行的命令else    # 所有条件都不满足时执行的命令fi  

注意:[ ] 是测试命令,左右两边必须有空格!这是新手常犯的错误。

常用条件表达式

Shell 支持多种类型的条件判断,包括文件测试、字符串比较和数值比较。

1. 文件测试

  • -e file:文件存在
  • -f file:是普通文件
  • -d dir:是目录
  • -r file:可读
  • -w file:可写
  • -x file:可执行

示例:检查某个文件是否存在

#!/bin/bashif [ -e /home/user/myfile.txt ]then    echo "文件存在!"else    echo "文件不存在。"fi  

2. 字符串比较

  • str1 = str2:相等
  • str1 != str2:不相等
  • -z str:字符串为空
  • -n str:字符串非空

示例:判断用户输入是否为空

#!/bin/bashecho "请输入你的名字:"read nameif [ -z "$name" ]then    echo "你没有输入名字!"else    echo "你好,$name!"fi  

3. 数值比较

  • num1 -eq num2:等于
  • num1 -ne num2:不等于
  • num1 -gt num2:大于
  • num1 -lt num2:小于
  • num1 -ge num2:大于等于
  • num1 -le num2:小于等于

示例:判断年龄是否成年

#!/bin/bashecho "请输入你的年龄:"read ageif [ $age -ge 18 ]then    echo "你已成年。"else    echo "你还未成年。"fi  

实战小项目:自动备份脚本

结合我们学到的 Linux Shell条件判断bash条件表达式,来写一个简单的备份脚本:

#!/bin/bashSOURCE="/home/user/documents"BACKUP="/backup/documents_$(date +%Y%m%d).tar.gz"# 检查源目录是否存在if [ ! -d "$SOURCE" ]then    echo "错误:源目录 $SOURCE 不存在!"    exit 1fi# 检查备份是否已存在if [ -e "$BACKUP" ]then    echo "警告:今日备份已存在,跳过..."else    tar -czf "$BACKUP" "$SOURCE"    echo "备份成功:$BACKUP"fi  

这个脚本展示了如何用 Shell脚本教程 中学到的知识解决实际问题。它先检查源目录是否存在,再判断今天是否已经备份过,避免重复操作。

常见错误与提示

  • 忘记在 [] 周围加空格 → 会报错
  • 变量未加双引号(如 $name 应写作 "$name")→ 遇到空格会出错
  • 数值比较用了 == 而不是 -eq → 结果可能不符合预期

总结

通过本教程,你已经掌握了 if语句使用 的核心技巧,并能编写具备基本逻辑判断能力的 Shell 脚本。条件判断是 Shell 编程的基石,熟练运用后,你可以自动化更多复杂任务,提升工作效率。

现在,打开你的终端,新建一个 .sh 文件,动手试试吧!实践是最好的老师。