我正在使用使用 CentOS 6.5 和 GNU bash 版本 4.1.2(操作系统内置)在此处找到的以下脚本。
#! /bin/bash
FILETYPES=( "*.html" "*.css" "*.js" "*.xml" )
DIRECTORIES="/var/www/html/phpmyadmin"
MIN_SIZE=32
for currentdir in $DIRECTORIES
do
for i in "${FILETYPES[@]}"
do
find $currentdir -iname "$i" -exec bash -c 'PLAINFILE={};GZIPPEDFILE={}.gz; \
if [ -e $GZIPPEDFILE ]; \
then if [ `stat --printf=%Y $PLAINFILE` -gt `stat --printf=%Y $GZIPPEDFILE` ]; \
then gzip -1 -f -c $PLAINFILE > $GZIPPEDFILE; \
fi; \
elif [ `stat --printf=%s $PLAINFILE` -gt $MIN_SIZE ]; \
then gzip -1 -c $PLAINFILE > $GZIPPEDFILE; \
fi' \;
done
done
但是每次执行它时,我都会发现自己:
bash: line 5: [: 10262: unary operator expected
bash: line 5: [: 5329: unary operator expected
bash: line 5: [: 264839: unary operator expected
bash: line 5: [: 183256: unary operator expected
bash: line 5: [: 12481: unary operator expected
[...] and lots more :-(
我试过[[
在第 5 行使用,elif [ stat --printf=%s $PLAINFILE -gt $MIN_SIZE ];
但我通过标准输出得到了奇怪的东西。