【发布时间】:2019-09-12 03:55:41
【问题描述】:
我有一个用来清理一些临时文件的 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"
我做错了什么?
【问题讨论】:
-
请注意,您确实应该引用
[ -d "$INHOUSEFILES" ]。 (理想情况下,不要给它一个全大写的名称;那些由 shell 和 POSIX 定义的工具用于环境和改变其操作的内置变量,而具有至少一个小写字符的名称保证不会修改 POSIX - 定义工具在应用程序使用时的行为——请参阅pubs.opengroup.org/onlinepubs/9699919799/basedefs/… 的相关标准,记住设置 shell 变量会覆盖任何类似命名的环境变量。