2014-10-03 94 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通常會將它轉換成一個回車換行對。

當字符實際到達顯示設備時,回車會將光標移動到行的開頭,而換行將其向下移動一行。

相關問題