期望中的\ n和\ r之间的区别?

在这个特定的脚本中,他们使用\n

 #!/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 

还可以使用吗? 如果不是,有什么区别?

\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通常会把它翻译成一个回车换行对。

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