如何在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
相关产品推荐
相关产品推荐

