我正在写一些脚本并写了一些类似的东西
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 ×1