我有一个脚本会抛出上述错误,并且通常在同一行上,但是在脚本运行的不同点。
不幸的是,我无法运行简单的查找,因为我需要一个可以相应查看并实现的脚本。
该脚本的目的是删除特定目录(命名目录)中的所有文件,如果该文件的年龄超过特定年龄(x),则删除子目录。如果文件夹中的所有文件都在x上,则删除该文件夹。必须将所需命令输出到每个主目录的文件中,以便可以在运行之前检查输出。
我在下面包括了脚本的一部分,这是导致错误的原因。该错误通常在函数开始时在回显时发生。但是在不同的循环上。
finddir () {
echo "Entering finddir"
folder=$1
parentfolder=$2
echo $folder
echo "parent " $parentfolder
echo "$folder (parent $parentfolder)"
dircount=`find $folder -mindepth 1 -type d -printf '1' | wc -c` # checking for directories
if [ $dircount -eq 0 ] && [ ! -z $parentfolder ] ; then
modifiedseconds=`stat -c %Y $parentfolder`
modifieddate=`stat -c %y $parentfolder`
if [ $modifiedseconds -lt $testseconds ]; then
echo "All files in folder $parentfolder to be deleted"
disksize=`du $parentfolder --max-depth 0|cut -f1`
filecount=`ls -1 $parentfolder|wc -l`
echo "rm -rf $parentfolder #$modifieddate | $disksize | $filecount" >>$deletionfile
elif [ `find $parentfolder -type f -printf '1' | wc -c` -eq 0 ]; then
echo "empty directory being deleted $parentfolder"
echo "rmdir $parentfolder" >>$deletionfile
else
echo "finding files for $directory"
findfiles $directory
fi
else
#find $folder -maxdepth 1 -mindepth 1 -type d|
while read folder2
do
echo "Looping through folders"
echo "folder " $folder
echo "folder2" $folder2
finddir $folder2 $folder
done < <(find $folder -maxdepth 1 -mindepth 1 -type d)
fi
}
任何关于根本原因的想法,或者更好的方法来构造允许代码运行的脚本。
感谢阅读