Bash脚本如何检测当前脚本相对路径上层目录的文件是否存在
Bash 获取相对于当前运行脚本的文件路径方法
在Bash环境下要计算相对当前脚本的文件路径,核心依赖内置变量${BASH_SOURCE},这个变量会始终返回当前正在执行的脚本的自身路径,不会受脚本执行时所在的工作目录影响。
对应你给出的场景:
- 当前运行脚本路径:
..../app/scripts/dev.sh - 待检测目标文件路径:
..../app/dist/file.js
相当于从脚本所在的scripts目录向上退1级到app目录,再进入dist目录即可定位到目标文件,实现代码如下:
# 拼接得到目标文件的相对路径 target_path="${BASH_SOURCE%/*}/../dist/file.js" # 检测文件是否存在 if [ -f "$target_path" ]; then echo "文件存在,路径为:${target_path}" else echo "文件不存在,路径为:${target_path}" fi
注意事项
- 变量引用时建议包裹双引号,避免路径中存在空格、特殊字符时逻辑报错
- 如果需要得到无相对层级的绝对路径,可以搭配
realpath命令处理:target_path=$(realpath "${BASH_SOURCE%/*}/../dist/file.js")
内容的提问来源于stack exchange,提问作者ZiiMakc
相关产品推荐
相关产品推荐

