不过,另外提及一下,目前遇到一个问题,就是上述的代码:ls | tr " " "\?"
放到shell中执行:local sub_folders=`ls $input_folder | tr "\32" "\?"`;
echo '444 sub_folders='$sub_folders;
当时结果是tr无效,输出的效果中文件名中的空格没有被替换为问号。
其中当前环境是用的Cygwin,tr版本为:CLi@PC-CLI-1 ~/develop/docbook/books/arm_vs_mips/src
$ tr --version
tr (GNU coreutils) 8.15
Packaged by Cygwin (8.15-1)
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Jim Meyering.
后来终于经过一番折腾,而搞清楚了:
把问号换成其他的,比如等:local sub_folders=`ls $input_folder | tr "\32" "\
local sub_folders=`ls $input_folder | tr "\32" "\>"`;
也都是可以看到替换的结果的。
并且也可以用:each_item=`echo $each_item | tr "\
each_item=`echo $each_item | tr "\>" " "`;
再替换回来的。
而对于上述的问号替换空格,虽然没有显示出来,但是如果没有此操作的话,后面for each_item in $sub_folders; do
所得到的每个item中,arm_vs_mips.xml - Copy_bak
就会变成三个字符串:arm_vs_mips.xml
-
Copy_bak
而有此操作,后面得到的就是一个独立的字符串:arm_vs_mips.xml - Copy_bak
所以明白了根本原因是,Cygwin中,没有正确的显示出来,实际上,是已经替换成功的了。
不过很悲催的是,单独echo问号字符,却又是可以正常显示的。。。
说实话,这样的bug,真的很让人崩溃。。。太浪费时间了。。。