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

Jas*_*nes 6 linux bash expect

在此特定脚本中,他们使用\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
Run Code Online (Sandbox Code Playgroud)

还能\r使用吗?如果没有,有什么区别?

Ken*_*ter 7

\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通常会将其转换为回车换行符对。

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