2011-03-01 85 views
10

我想知道是否有一種方式,我可以從STDIN讀取用戶輸入沒有回顯到R屏幕。我知道readline(),readLines()scan()可以讀取用戶輸入鍵盤,但似乎沒有選項不回顯。閱讀用戶輸入沒有回聲

正如您所預料的那樣,您可以獲取密碼。所以我在找東西讓我這樣做:

> a<-get_password() 
Password: 
> a 
[1] "password" 
+3

不能輕易跨平臺完成,通常的解決方案是tcltk:http://stackoverflow.com/questions/2917202 - 但如果你真的需要它從STDIN ... – Spacedman 2011-03-01 13:04:43

+1

可能重複的[R:方式安全地給R應用程序的密碼?](http://stackoverflow.com/questions/2917202/r-way-to-securely-give-a-password-to-r-application) – 2011-03-01 13:22:15

回答

9

什麼是操作系統?如果你可以從終端運行它,這應該工作。

get_password <- function() { 
cat("Password: ") 
system("stty -echo") 
a <- readline() 
system("stty echo") 
cat("\n") 
return(a) 
} 

> a <- get_password() 
Password: 
> a 
[1] "sdfs" 
> 

這適用於使用Terminal.app中的R的OS X,但不適用於R.app。對Windows解決方案沒有想法,因爲似乎沒有一個本地R解決方案。

+0

這是偉大的,目前我只處理Mac/Linux,所以這將完美服務。謝謝! – 2011-03-01 13:24:48

+0

這也適用於Linux(在Ubuntu上測試),因爲它是基於UNIX的技巧。 – 2011-03-01 13:36:35

5

如果這是爲了更多的生產型環境,那麼你可以考慮使用R-Tcl/Tk,它有一個「顯示」參數用於輸入密碼。