LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1011|回复: 7

请问关于文件的结尾的问题

[复制链接]
发表于 2005-10-13 08:55:43 | 显示全部楼层 |阅读模式
如果我用vi编辑一个文件a,在最后一行键入一个回车后,按esc 然后:wq
然后写一个小程序try,象这样
#!/usr/bin/perl -w
foreach (<>){
  print $_;
}
然后我运行
./try a
的时候后面总是多一个换行,
如果我把a中最后一行的回车去掉是理想的输出。
请问这是为什么?
是一个文件在文件结尾之前要自动加一个换行符么?
发表于 2005-10-13 10:07:39 | 显示全部楼层
在最后一行$_是“\n”,你 print $_; 当然就有一个空行。
但如果你去掉了最后的空行,就不会输出空行啦。

这个指令不是和cat一样吗?用cat也会有这个结果的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-13 13:13:11 | 显示全部楼层
比入文件a的内容是
abcd
12345
在12345的后面敲一个回车,然后光标停在下一行的开始,然后就保存文件退出
这时运行try的时候,为什么在打印12345之后还有一个空行呢?
回复 支持 反对

使用道具 举报

发表于 2005-10-14 00:00:57 | 显示全部楼层
因为你的a文件的最后一个字符是回车,而你的try程序是把a里面所有的东西打出来,所以回车当然也被打出来了。

这跟你在a文件里放入"abc",然后tra a就打出abc的道理一样啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-14 01:01:59 | 显示全部楼层
a文件的最后一个字符是回车应该仅是把文件的最后一行也就是12345打印出来后,换成新的一行并光标回到行首,也就是出现一个在行首的shell提示符,那为什么会这样
12345

[....]$
回复 支持 反对

使用道具 举报

发表于 2005-10-15 04:54:48 | 显示全部楼层
I see.  
This is the way perl works.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-15 15:15:16 | 显示全部楼层
why does perl work in such a unreasonable way?!
回复 支持 反对

使用道具 举报

发表于 2005-10-31 16:31:41 | 显示全部楼层
Post by boblovebaby
换成新的一行并光标回到行首,也就是出现一个在行首的shell提示符
[....]$


不是这样的吧?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表