我在写一些脚本,写的东西像
ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
发生的是,出于愚蠢,我执行了第二行而不执行第一行。原来[-d“”]返回true,表达式变为
rm -rf /*
幸运的是,这只是一台测试机,我不是sudo,但是尽管我丢失了一些数据
我的问题是,为什么[-d“”]返回true?文档明确指出它检查路径是否存在并且是文件夹
我通过使用解决了问题
[ -e $ARTIFACTS ]
这似乎有效
干杯
rm -rf $ARTIFACTS
没有/*
。这也将删除该$ARTIFACTS
目录,这很好,因为如果我想确保在放入某些内容之前该目录已经存在,mkdir -p $ARTIFACTS
无论如何我都会执行。它还会删除里面的隐藏文件$ARTIFACTS
,这也很好,因为rm -rf $ARTIFACTS/*
如果$ARTIFACTS
包含任何我想保存的内容,我不会写。