我遇到了一个我无法弄清楚的问题。 我有一个通过目录recursion的BASH脚本,并将当前date与文件的文件修改时间进行比较。 如果超过一定的年龄,文件会被压缩。 我收到以下错误:
./serversync.sh: line 87: 1324308130-1323116622 1323581504: syntax error in expression (error token is "1323581504")
下面引用了运行在此处的代码段:
#If the file doesn't have a matching .gz file, compress it do if [ ! -e ${FILE}.gz ] then echo "Matching Gzip doesn't exist for $FILE" echo Checking to see if compression needed #test to make sure that the file is 30 days old, and if it is, gzip FILEMTIME=$(stat -c %Y $FILE) FILEAGE=$(($DATE-$FILEMTIME)) echo fileage is $FILEAGE if [ $FILEAGE -gt $COMPRESSWINDOWSTART -a $FILEAGE -lt $COMPRESSWINDOWEND ] then echo $FILEAGE is greater than $COMPRESSWINDOWSTART and less than $COMPRESSWINDOWEND echo Compressing $FILE gzip $FILE fi fi
第87行是这一行:
FILEAGE=$(($DATE-$FILEMTIME))
如果任何人可以提供任何想法,为什么发生这种情况编号apprciate!
尝试
FILEAGE=$DATE-$FILEMTIME
你曾经在寻找一个名为“1324308130-1323116622”的variables,而不是试图评估expression式。
你为什么不用这个find ?
find /path/to/searchdirectory -type f -mtime +30 -print0 | xargs -n 1 -0 gzip
将是您的任务的最低解决scheme,没有错误检查。
错误最终与其中一个文件关联。 在本地系统上创build文件的脚本已经创build了一个目录。 它以alert _ * /格式创build了一个目录,这个目录搞乱了stat命令。 谢谢大家的期待!