小编Moa*_*sry的帖子

为什么在空字符串上使用 -d 检查文件夹是否存在会返回 true?

我正在写一些脚本并写了一些类似的东西

ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
Run Code Online (Sandbox Code Playgroud)

发生的事情是出于愚蠢,我没有执行第一行就执行了第二行。原来 [ -d "" ] 返回真,表达式变成了

rm -rf /*
Run Code Online (Sandbox Code Playgroud)

幸运的是它只是一台测试机,我不是sudo,但虽然我丢失了一些数据

我的问题是,为什么 [ -d "" ] 返回 true?文档清楚地说明它检查路径是否存在并且是一个文件夹

我通过使用解决了这个问题

[ -e $ARTIFACTS ]
这似乎有效

干杯

bash

8
推荐指数
3
解决办法
2386
查看次数

标签 统计

bash ×1