Bash 函数与流程控制:read、if、for、case 验证

Bash 函数与流程控制:read、if、for、case 验证

1. 用途介绍

函数复用脚本逻辑,read 接收输入,if/case 分支判断,for/while/until 控制循环。本文修正原笔记大小写、反引号测试和文件类型判断,示例只读检查,不修改文件。

2. 准备运行环境

Linux 与 Bash、普通账号即可,不需要 root 或网络服务。代码保存为 demo.sh,先 bash -n demo.sh 检查语法,再 bash demo.sh 执行。

3. 相关知识与注意点

• Bash 关键字区分大小写,使用 if、then、fi、for、do、done、case、esac。

• read 是内置命令,不是系统函数;使用 read -r 避免反斜杠转义。

• 与 两侧需要空格;变量使用双引号,避免空值与空格导致参数错位。

• test 直接返回退出状态,不应把 test 放入反引号当作命令运行。

• 不是普通文件也未必是目录,还可能是设备、链接或其他类型。

• return 返回函数退出状态;exit 终止脚本。函数变量使用 local 限定作用域。

4. 实验步骤

bash 复制代码
#!/usr/bin/env bash
check_path() {
    local path="$1"
    if [ -f "$path" ]; then
        printf 'regular file: %s\n' "$path"
    elif [ -d "$path" ]; then
        printf 'directory: %s\n' "$path"
    elif [ -e "$path" ] || [ -L "$path" ]; then
        printf 'other entry: %s\n' "$path"
    else
        printf 'not found: %s\n' "$path"
        return 1
    fi
}
read -r -p 'Path: ' filename || exit 1
check_path "$filename"

循环与分支:

bash 复制代码
for ((i=1; i<=3; i++)); do
    printf '%s\n' "$i"
done
mode=check
case "$mode" in
    check) printf 'checking\n' ;;
    *) printf 'unknown mode\n' ;;
esac

while 条件为真时继续,until 条件为假时继续。循环要确保状态变化和退出条件,避免无限运行。

5. 原实验截图

!image2(https://i-blog.csdnimg.cn/direct/399571b3aec94075881548917312a857.png)

6. 验证命令

bash -n demo.sh 检查语法;bash demo.sh 分别输入已存在文件、目录、包含空格的路径及不存在路径。预期得到对应分类,不存在时函数返回1;单独示例循环输出1、2、3,case输出checking。未在本机Linux执行,以上为预期结果。调试可用 bash -x demo.sh,但不要跟踪含凭据脚本。

相关推荐
m0_547486661 小时前
《Linux操作系统基本原理与应用》全套PPT课件2026
linux·linux系统
鬼手点金2 小时前
从 API 消息到模型 Token:Chat Template
java·前端·javascript·数据库·人工智能·深度学习·1024程序员节
Shadow(⊙o⊙)2 小时前
LangChain 自定义工具全解析:从 @tool 到 bind_tools 的完整调用链路
java·服务器·前端·1024程序员节
Pointer Pursuit2 小时前
Linux环境变量
linux·服务器·c语言·链表·1024程序员节
星恒随风2 小时前
Linux网络编程基础(二):彻底理解局域网通信、MAC与IP地址、数据封装、端口号、网络字节序及Socket接口
linux·网络·笔记·学习·tcp/ip·1024程序员节
CHHH_HHH2 小时前
【Linux网络篇】初识网络与Socket编程基础
linux·服务器·c语言·开发语言·网络·后端·1024程序员节
小poop2 小时前
HTML 基础入门:从结构到常用标签详解
前端
jiangliushi62 小时前
GPT-6.1 Sol 免费用:PowerShell 装 Codex 报“禁止运行脚本 npm.ps1”?一条命令解决
前端·gpt·npm
计算机魔术师2 小时前
日均500万亿词元,国内推理速度翻倍却仍落后国外——差距卡在哪
前端