Linux的Shell脚本编程的运算符、条件判断与流程控制详解

发布于:2025-04-09 ⋅ 阅读:(32) ⋅ 点赞:(0)

Linux的Shell脚本编程的运算符、条件判断与流程控制详解

一、Shell运算符基础

在Shell脚本中,运算操作是自动化任务处理的基础能力。Shell支持三种运算符语法形式,适用于不同场景:

  1. 双括号运算符 $((表达式))

    RES1=$(((2+3)*4))  # 计算(2+3)*4
    

    特点:支持复杂算术运算,直接返回数值结果

  2. 方括号运算符 $[表达式]

    RES2=$[(2+3)*4]    # 等效于双括号写法
    

    特点:语法简洁,但可读性稍弱于双括号形式

  3. expr命令

    TEMP=`expr 2 + 3`   # 加法运算
    RES3=`expr $TEMP \* 4`  # 乘法需转义*
    

    注意:运算符间必须加空格,乘法需用反斜杠转义*

最佳实践:推荐使用$(( ))进行算术运算,因其执行效率更高且无需转义符号。

二、条件判断语句

条件判断是流程控制的核心,Shell提供丰富的判断类型:

1. 字符串比较

if [ "ok" = "ok" ]; then
    echo "字符串相等"
fi

注意:等号=两侧必须留空格

2. 数值比较

运算符 说明 示例
-eq 等于 [ 23 -eq 23 ]
-ne 不等于 [ 23 -ne 22 ]
-gt 大于 [ 23 -gt 22 ]
-ge 大于等于 [ 23 -ge 22 ]
-lt 小于 [ 23 -lt 24 ]
-le 小于等于 [ 23 -le 23 ]

3. 文件判断

运算符 说明 示例
-f 文件存在且为普通文件 [ -f /path/to/file ]
-d 目录存在 [ -d /path/to/dir ]
-r 可读权限 [ -r /path/to/file ]
-w 可写权限 [ -w /path/to/file ]
-x 可执行权限 [ -x /path/to/executable ]

三、流程控制结构

1. if条件判断

单分支结构

if [ 条件 ]; then
    # 执行代码
fi

多分支结构

if [ $1 -ge 60 ]; then
    echo "及格"
elif [ $1 -lt 60 ]; then
    echo "不及格"
fi

2. case多值匹配

case $1 in
    "1") echo "周一" ;;
    "2") echo "周二" ;;
    *)   echo "无效输入" ;;
esac

特点:支持模式匹配,*表示默认分支

3. for循环

列表遍历

for fruit in apple banana orange; do
    echo "水果: $fruit"
done

C语言风格

SUM=0
for ((i=1; i<=$1; i++)); do
    SUM=$[SUM+i]
done

参数遍历

# 使用$*整体遍历
for arg in "$*"; do
    echo "参数: $arg"
done

# 使用$@逐个遍历
for arg in $@; do
    echo "参数: $arg"
done

4. while循环

SUM=0
i=1
while [ $i -le $1 ]; do
    SUM=$[SUM+i]
    i=$[i+1]
done

四、交互式输入处理

read命令用于读取用户输入:

read -p "请输入您的姓名: " username
echo "欢迎您, $username"

# 带超时设置
read -t 10 -p "请在10秒内输入: " input

五、综合应用示例

场景:开发成绩评估脚本

#!/bin/bash
read -p "请输入考试成绩: " score

if [ $score -ge 90 ]; then
    echo "优秀"
elif [ $score -ge 60 ]; then
    echo "及格"
else
    echo "不及格"
fi

场景:文件操作验证

FILE="/tmp/test.txt"
if [ -f "$FILE" ]; then
    echo "文件存在,正在读取..."
    cat $FILE
else
    echo "文件不存在,正在创建..."
    touch $FILE
fi

六、注意事项

  1. 空格规范[ ]内的条件表达式必须保留空格
  2. 变量引用:使用$var引用变量,双括号内可直接使用变量名
  3. 错误处理:建议添加set -e使脚本在出错时自动退出
  4. 兼容性:不同Shell(bash/zsh等)可能有语法差异

掌握这些核心语法可使您高效完成系统监控、批量文件处理、自动化部署等任务。建议通过实际项目练习加深理解,例如尝试编写系统资源监控脚本或日志分析程序。


网站公告

今日签到

点亮在社区的每一天
去签到