Shell脚本错误的文件名与空格

我有一个bash脚本search位于我的服务器根目录下的每个静态文件,并在每个文件旁边存储一个gzipped版本。 我从http://wiki.linuxwall.info/doku.php/en:ressources:dossiers:nginx:nginx_performance_tuning

问题是它不能与空格的文件名工作,我的网站现在不使用任何,我会尝试它永远不会,但我不是唯一一个在前端工作,所以我可能无法控制它,所以我只是想确保这个脚本适用于有空格的文件。 希望有人可以看看,并帮我修复它。

#! /bin/bash FILETYPES=("*.html" "*.woff" "*.css" "*.jpg" "*.jpeg" "*.gif" "*.png" "*.js") # specify a list of directories to check recursively DIRECTORIES="/usr/share/nginx/www/" 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 echo "$GZIPPEDFILE outdated, regenerating"; \ gzip -9 -f -c $PLAINFILE > $GZIPPEDFILE; \ fi; \ else echo "$GZIPPEDFILE is missing, creating it"; \ gzip -9 -c $PLAINFILE > $GZIPPEDFILE; \ fi' \; done done 

引用其中的文件名的variables,所以他们不被解释为一个命令的多个参数:

 #! /bin/bash FILETYPES=("*.html" "*.woff" "*.css" "*.jpg" "*.jpeg" "*.gif" "*.png" "*.js") # specify a list of directories to check recursively DIRECTORIES="/usr/share/nginx/www/" 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 echo "$GZIPPEDFILE outdated, regenerating"; \ gzip -9 -f -c "$PLAINFILE" > "$GZIPPEDFILE"; \ fi; \ else echo "$GZIPPEDFILE is missing, creating it"; \ gzip -9 -c "$PLAINFILE" > "$GZIPPEDFILE"; \ fi' \; done done