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

如何在Bash脚本中实现文件存在性检查?附代码验证

你的文件存在检查逻辑是可行的,但要注意参数解析的前提

你这段检查文件是否存在的代码逻辑本身是没问题的:

  • [[! -f $JSON_FILE ]] 能准确判断指定路径是否不是一个存在的普通文件,如果判断成立就输出错误并退出,完全符合你的需求。

但有个关键前提必须满足:$JSON_FILE 变量必须已经正确获取到 -f 选项后面的文件路径。如果你还没处理命令行参数解析,得补上这部分逻辑,比如用 getopts 来实现参数解析:

#!/bin/bash

# 解析命令行参数
while getopts "f:" opt; do
  case $opt in
    f)
      JSON_FILE="$OPTARG"
      ;;
    \?)
      echo "无效选项: -$OPTARG" >&2
      exit 1
      ;;
    :)
      echo "选项 -$OPTARG 需要指定文件路径参数" >&2
      exit 1
      ;;
  esac
done

# 先检查是否已指定文件路径
if [[ -z $JSON_FILE ]]; then
  echo "错误: 请通过 -f 参数指定JSON文件路径" >&2
  exit 1
fi

# 检查文件是否存在
if [[! -f $JSON_FILE ]]; then
  echo "错误: 文件 $JSON_FILE 不存在。" >&2
  exit 1
fi

# 这里写脚本后续的业务逻辑...

额外补充两个实用优化点:

  • 把错误信息输出到标准错误流(>&2),这是脚本开发的规范做法,避免错误信息和正常输出混在一起。
  • 增加变量非空检查,防止用户没传 -f 参数或者参数为空的情况,让错误提示更明确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:18:29