2012-01-30 132 views
1

我打算強調用戶輸入,但在做研究後,我仍然無法找到實現方法。下劃線用戶輸入

到目前爲止,這是我從研究中得到的結果,但它仍然無效。 任何人都知道如何解決它?或者更恰當的方法來做到這一點?

如果我正在使用,請閱讀-p「你叫什麼名字:」名稱而不是下面的那個?正如我期待的輸出結果。

你叫什麼名字? (來自用戶和輸入下劃線)

function underlineInput() 
{ 
PS1='\033[4;47;40m' 
} 

function UNunderlineInput() 
{ 
PS1='\033[0;47;40m' 
} 

function hi() 
{ 
echo "Please enter your name: " 
underlineInput 
read input 
underlineInput 
} 

感謝那些誰提前幫助! 乾杯!

回答

1

把轉義序列開啓在提示符的結尾強調,然後發送回至正常序列之後:

read -p $'Please enter your name: \033[4m' name 
printf '\033[0m' # Use printf instead of echo to avoid newline, and it translates escape without $'' 

順便說一句,如果你想這個腳本在其他類型的工作也可以使用terminfo數據庫來獲取相關的escape(/ whatever)序列。爲強調和關閉的terminfo能力名字是「SMUL」和「RMUL」:

read -p "Please enter your name: $(tput smul)" name 
tput rmul 
2

退房此鏈接here

但它只是:

$ echo -e "\033[4mThis is a underlined line.\033[0m" 

的關鍵部分是\033[4m強調和\033[0m改回。

+0

喜Grammin,如果我使用的是什麼 讀-p「你叫什麼名字?:」名字 – Andres 2012-01-30 15:21:48

+0

@Andres我會做一些事情:echo -n「你叫什麼名字」;閱讀var;回聲「\ 033 [4mHi $ var \ 033 [0m」 – Grammin 2012-01-30 15:32:00