shell读取文件操作遇到的诡异现象

清钟沁桐 2011-03-03 01:03:10

-W) local WOption=${2%%,*}; # 增加-W选项,以便区分-Wl,@file 情形 20110303
echo "-----------------WOption = $WOption";
case "$WOption" in
"a" ) CFLAGS="$CFLAGS -W$2";; # 汇编阶段有效
"p" ) CPPFLAGS="$CPPFLAGS -W$2";; # 预处理阶段有效
"l" ) local list=${2#*,}; # 链接阶段有效
# echo first: ${list:0:1} # 取第一个字符 20110303
if [ ${list:0:1} == "@" ]; then # 由于XCC对ho文件的链接不支持,需要做特别处理
filename=${list#*@} # 截除第一个字符@
#echo "filename=$filename";
for i in `cat $filename`; do
echo i="$i";
EXISTING_HO_FILES="$EXISTING_HO_FILES $i";
echo eeeeeeeeeeeeeeeeeeeee33
echo EXISTING_HO_FILES="$EXISTING_HO_FILES";
echo dddddddddddddddddddddddd
done
#CFLAGS="$CFLAGS -W$2"; # 不要记录到变量CFLAGS中
else
CFLAGS="$CFLAGS -W$2";
fi
echo ++++++*************+EXISTING_HO_FILES="$EXISTING_HO_FILES";
;;
*) echo "else"; CPPFLAGS="$CPPFLAGS -W$2"; CFLAGS="$CFLAGS -W$2";;
esac
shift 2;;

这个代码为什么执行显示:

-----------------WOption = l
++++++*************+EXISTING_HO_FILES=
-----------------WOption = p
-----------------WOption = klasld
else
-----------------WOption = a
-----------------WOption = l
i=dsps1.o
eeeeeeeeeeeeeeeeeeeee33
EXISTING_HO_FILES= dsps1.o
dddddddddddddddddddddddd
i=dsps2.o
eeeeeeeeeeeeeeeeeeeee33
dsps2.o_HO_FILES= dsps1.o
dddddddddddddddddddddddd
i=dsps3.o
eeeeeeeeeeeeeeeeeeeee33
dsps3.o_HO_FILES= dsps1.o
dddddddddddddddddddddddd
i=dsps4.o
eeeeeeeeeeeeeeeeeeeee33
dsps4.o_HO_FILES= dsps1.o
dddddddddddddddddddddddd
dsps4.o***********+EXISTING_HO_FILES= dsps1.o
...全文
66 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
清钟沁桐 2011-03-03
  • 打赏
  • 举报
回复
加上 dos2unix -U $filename >& /dev/null # cat 命令对文件中的\r处理会失
cygwin中cat对于\r处理有问题
codesnail 2011-03-03
  • 打赏
  • 举报
回复
lz的结贴率。。。。
iambic 2011-03-03
  • 打赏
  • 举报
回复
哪有这么问的。你到底哪一句不懂?

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧