我有一个正在使用的shell脚本来清理一些临时文件。 该脚本存储在 / root / cronjobs 中。 当我从此位置 ./ cleanUploader.sh 运行脚本时,它将删除当前文件夹中的所有文件及其自身。 这是脚本:
#!/bin/bash
# cleanUploader.sh
# Batch file to remove various temp directories and files left over from the Uploader
clear
echo
INHOUSEFILES=/var/www/html/inhouseweb/officedb/uploader/files
shopt -s extglob
if [ -d $INHOUSEFILES ]; then
echo "Removing directory $INHOUSEFILES"
rm -rf $INHOUSEFILES/* !(".gitignore")
else
echo "directory $INHOUSEFILES not found"
fi
echo
shopt -u extglob
echo
echo "Done"
我在做什么错了?
答案 0 :(得分:3)
rm -rf $INHOUSEFILES/* !(".gitignore")
这会删除$INHOUSEFILES/*
中的所有文件,然后 也会删除 current 目录中除.gitignore
之外的所有内容。当!(".gitignore")
是一个单独的参数时,它就是这样做的。
如果您打算删除$INHOUSEFILES/
中除.gitignore
之外的所有内容,请合并两个参数:
rm -rf $INHOUSEFILES/!(".gitignore")
引用变量扩展也是一个好主意。 (相反,您不需要像.gitignore
这样的文字字符串来使用它们。)
rm -rf "$INHOUSEFILES"/!(.gitignore)