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

RedHat 7.9非脚本目录执行.sh脚本报No such file or directory错误

问题根因

你传入的参数FLUJOS/flujo_01是相对路径,脚本中done < $file直接读取该路径时,会以你执行命令时的当前工作目录(报错场景中是/home目录)为基准拼接路径,而非以脚本所在目录为基准。你切换到脚本所在目录执行时相对路径匹配成功,在其他目录执行时会拼接出不存在的路径,因此触发No such file or directory报错,和权限配置无关。

解决方案

可根据你的业务使用习惯二选一:

  • 如果你固定要传「相对于脚本所在目录」的路径作为参数,直接修改脚本代码即可:
    替换脚本开头file=$1为以下内容:

    # 先获取脚本本身的绝对所在目录
    script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
    # 拼接成配置文件的绝对路径
    file="${script_dir}/$1"
    

    改完后不管在哪个目录执行脚本,只要传入的参数是相对于脚本目录的路径,都能正常识别。

  • 如果你需要支持传入任意路径,执行命令时直接传配置文件的绝对路径即可:

    /opt/IBM/db2/V11.1/bin/script_ingesta_sudo_clean_paralelo.sh /opt/IBM/db2/V11.1/bin/FLUJOS/flujo_01
    

额外优化建议

你脚本中生成的临时文件connect_db2_log、test_log_count目前也用的相对路径,会生成在你执行命令的当前目录下,容易出现多份临时文件冲突。如果要统一生成到脚本所在目录,也可以给这些文件名前加上${script_dir}/前缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:09:03