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

Bash中test -e判断文件路径始终返回false,如何优化代码?

Bash路径有效性检查的优化方案

原代码的问题在于:test -e $myPath && test -f $myPath执行成功时不会输出任何内容,导致mytest变量为空字符串。[[ ! $mytest ]]会把空值判定为“假”,取反后就会错误触发无效路径的分支。

优化方案一:直接在if条件中判断(推荐)

不需要额外变量,直接利用Bash的条件表达式,同时记得给变量加双引号避免路径含特殊字符时出错:

# 检查路径是否为存在的普通文件
if [[ ! -f "$myPath" ]]; then 
    echo 'Path invalid. Stop..'
    exit 1
fi

注:-f选项已经包含了“文件存在”的检查(仅当路径存在且是普通文件时返回真),无需额外用-e重复判断。

优化方案二:存储命令退出状态码

如果一定要用变量记录检查结果,可以存储命令的退出状态(0为成功,非0为失败):

# 执行检查并保存退出状态
test -f "$myPath"
mytest=$?

if [[ $mytest -ne 0 ]]; then 
    echo 'Path invalid. Stop..'
    exit 1
fi

额外提示

如果需要检查的是目录而非普通文件,可将-f替换为-d;如果只需检查路径存在(不管是文件还是目录),用-e即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:40:31