2014-10-03 95 views
3

在这个特定的脚本中,他们使用\n n和 r之间的区别是什么?

#!/usr/bin/expect 

set password [lindex $argv 0] 

spawn asadmin enable-secure-admin 
expect "admin" 
send "admin\n" 
expect "password" 
send "$password\n" 
expect eof 
exit 

问题

\r一样好已经使用?如果不是,有什么区别?

+1

只需添加到Kenster的伟大答案,维基百科在[newline](http://en.wikipedia.org/wiki/Newline)/ EOL约定及其背后的历史上有一篇很好的文章。请注意,一些Internet协议更喜欢EOL的'\ r \ n'组合,尽管大多数软件都会处理普通的'\ n',而使用这种协议的库例程可能会自动将本地EOL转换为正确的顺序。 – 2014-10-04 07:28:37

回答

4

\n被换行,按Ctrl-J或字符012 \r是回车键,Ctrl-M或字符015

在一个交互式的UNIX背景下,当你键入它们(或模拟输入它们,与期望),他们是可以互换的。换行是正式的行终止字符,但tty设备通常会将回车换行转换为输入的换行符。在你的键盘上,BKWA(带箭头的大键可能被标记为“enter”或“return”)发送一个Ctrl-M,tty设备将转换为Ctrl-J。如果你的BKWA坏了,你可以实际输入Ctrl-M或Ctrl-J,它也可以工作。

输出时它们不可互换。正如我所说的,换行是正式的行结束符,所以程序(和文本文件)将用换行符来指示行结束。当一个换行输出到一个tty时,tty通常会将它转换成一个回车换行对。

当字符实际到达显示设备时,回车会将光标移动到行的开头,而换行将其向下移动一行。

相关问题