掌握Linux Shell条件判断(从零开始学Shell条件运算符)

V5主机测评

在编写 Linux Shell 脚本时,经常需要根据不同的条件执行不同的操作。这就需要用到 Linux Shell条件运算符。无论你是刚接触 Shell 的小白,还是想巩固基础知识的开发者,这篇教程都将帮助你轻松掌握条件判断的核心用法。

掌握Linux Shell条件判断(从零开始学Shell条件运算符)

什么是 Shell 条件运算符?

Shell 条件运算符用于在脚本中进行逻辑判断,比如比较数字、字符串,或者检查文件是否存在等。它们通常配合 if 语句使用,实现“如果...就...”的逻辑。

基本语法:test 命令与 [ ]

在 Shell 中,有两种常用方式来执行条件测试:

  • test expression
  • [ expression ](注意:方括号两边要有空格!)

这两种写法是等价的。例如:

# 使用 testif test -f /etc/passwd; then  echo "文件存在"fi# 使用 [ ]if [ -f /etc/passwd ]; then  echo "文件存在"fi  

常用条件运算符分类

1. 文件测试运算符

用于检查文件或目录的状态:

  • -f file:文件存在且为普通文件
  • -d dir:目录存在
  • -r file:文件可读
  • -w file:文件可写
  • -x file:文件可执行
if [ -d /home/user ]; then  echo "用户主目录存在"else  echo "目录不存在"fi  

2. 数值比较运算符

用于比较两个整数:

  • -eq:等于(equal)
  • -ne:不等于(not equal)
  • -gt:大于(greater than)
  • -lt:小于(less than)
  • -ge:大于等于
  • -le:小于等于
read -p "请输入一个数字: " numif [ $num -gt 10 ]; then  echo "数字大于10"else  echo "数字小于或等于10"fi  

3. 字符串比较运算符

用于比较字符串内容:

  • ===:字符串相等
  • !=:字符串不相等
  • -z str:字符串长度为0(空)
  • -n str:字符串长度非0(非空)
name="Alice"if [ "$name" = "Alice" ]; then  echo "欢迎 Alice!"fi  

4. 逻辑运算符

用于组合多个条件:

  • ! expr:逻辑非(取反)
  • expr1 -a expr2:逻辑与(and)— 注意:部分 Shell 不推荐使用,建议用 &&
  • expr1 -o expr2:逻辑或(or)— 同样,建议用 ||

更现代的写法是在 [[ ]] 中使用 &&||

if [[ -f script.sh && -x script.sh ]]; then  ./script.shelse  echo "脚本不可执行或不存在"fi  

完整示例:一个实用的备份脚本

下面是一个结合了多种 Shell测试命令 的小脚本,用于安全地备份重要文件:

#!/bin/bashSOURCE="/home/user/important.txt"BACKUP_DIR="/backup"# 检查源文件是否存在且可读if [ ! -f "$SOURCE" ] || [ ! -r "$SOURCE" ]; then  echo "错误:源文件不存在或不可读"  exit 1fi# 检查备份目录是否存在,不存在则创建if [ ! -d "$BACKUP_DIR" ]; then  mkdir -p "$BACKUP_DIR"  echo "已创建备份目录"fi# 执行备份cp "$SOURCE" "$BACKUP_DIR/$(date +%Y%m%d)_important.txt"echo "备份完成!"  

常见错误与注意事项

  • 方括号 [ ] 两边必须有空格,否则会报错。
  • 变量最好用双引号括起来,如 "$var",防止空值或含空格的字符串出错。
  • 在 Bash 中,推荐使用 [[ ]] 而不是 [ ],因为它支持更多功能且更安全。

总结

通过本教程,你已经掌握了 Linux Shell条件运算符 的基本用法,包括文件测试、数值比较、字符串判断和逻辑组合。这些知识是编写健壮 Shell脚本教程 的基础。多加练习,你很快就能写出功能强大的自动化脚本!

记住:条件判断是 Shell 编程的“大脑”,学会它,你就迈出了成为 Linux 自动化高手的第一步!

文章版权声明:除非注明,否则均为V5主机测评网_性价比VPS_性价比云服务器_免费独立服务器原创文章,转载或复制请以超链接形式并注明出处。