You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash函数语法错误排查:分类存储.conf文件函数报错问题

错误原因与解决办法

错误根源

你遇到的Syntax error: "(" unexpected (expecting "}")错误,核心原因是使用了POSIX标准的sh解释器执行仅Bash支持的语法:

  • 数组初始化readable_file_list=()是Bash的扩展特性,POSIX sh不支持这种写法,当用sh运行脚本时,会把()识别为非法语法,抛出错误码4。

解决办法

方法1:强制用Bash运行脚本

  • 在脚本的第一行添加Bash解释器声明:
    #!/bin/bash
    
  • 运行脚本时明确指定Bash:
    bash your_script.sh
    

方法2:兼容POSIX sh的写法(无需数组)

如果需要脚本能在sh环境下运行,可以去掉数组,直接在循环中写入目标文件,避免Bash特有的数组操作:

add_files () {
    # 先清空两个目标文件(避免残留旧内容)
    > readable_files.txt
    > unreadable_files.txt

    # 遍历根目录下的.conf文件
    for file in /*.conf; do
        # 处理通配符匹配不到文件的情况(防止把"/*.conf"本身写入文件)
        [ -e "$file" ] || continue
        
        if [ -r "$file" ]; then
            echo "$file" >> readable_files.txt
        else
            echo "$file" >> unreadable_files.txt
        fi
    done
}

额外提示

原代码中的/*.conf仅会匹配根目录下的.conf文件,如果需要递归查找系统中所有.conf文件,可以替换为find命令:

find / -name "*.conf" -type f | while read -r file; do
    # 这里放入判断可读/不可读并写入文件的逻辑
done

内容的提问来源于stack exchange,提问作者sth01020304

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:52:37