我需要对一些字体文件做些处理,字体名里面有些特殊字符,如空格,写了下面的脚本, 然后调用 “sh fonts.sh“, 却总是出问题,研究了好久,才发现是sh和bash的区别,这段代码用bash调用就没问题 #chmod +x fonts.sh #./fonts.sh #bash ./fonts.sh sh 和bash的区别

543 ~/www/fonts>cat fonts.sh #! /bin/bash IFS=$(echo -en “\n\b”) for i in $(find . -name \*.[Tt][Tt][Ff]); do echo “$i” done unset IFS

ubuntu下的bash和sh

525 ~/www/fonts>ls -l which sh lrwxrwxrwx 1 root root 4 2008-11-05 02:05 /bin/sh -> dash 526 ~/www/fonts>ls -l which bash -rwxr-xr-x 1 root root 729040 2009-03-02 22:22 /bin/bash

引以为戒,这是第二次遇到这种问题。 另: 一篇关于文件名中含有空白字符的处理的文章。 [BASH Shell: For Loop File Names With Spaces](http://www.cyberciti.biz/tips/handling-filenames-with-spaces-in- bash.html)