shell腳本系列:read用法
阿新 • • 發佈:2020-08-20
選項說明
read [-options] [variables]
選項 | 說明 |
---|---|
-a array | 把讀取的資料賦值給陣列 array,從下標 0 開始。 |
-d delimiter | 用字串 delimiter 指定讀取結束的位置,而不是一個換行符(讀取到的資料不包括 delimiter)。 |
-e | 在獲取使用者輸入的時候,對功能鍵進行編碼轉換,不會直接顯式功能鍵對應的字元。 |
-n | 讀取 num 個字元,而不是整行字元。 |
-p prompt | 顯示提示資訊,提示內容為 prompt。 |
-r | 原樣讀取(Raw mode),不把反斜槓字元解釋為轉義字元。 |
-s | 靜默模式(Silent mode),不會在螢幕上顯示輸入的字元。當輸入密碼和其它確認資訊的時候,這是很有必要的。 |
-t seconds | 設定超時時間,單位為秒。如果使用者沒有在指定時間內輸入完成,那麼 read 將會返回一個非 0 的退出狀態,表示讀取失敗。 |
-u fd | 使用檔案描述符 fd 作為輸入源,而不是標準輸入,類似於重定向。 |
示例
#!/bin/bash #第一次輸入密碼 read -t 20 -sp "Enter password in 20 seconds(once) > " pass1 && printf "\n" && #第二次輸入密碼 read -t 20 -sp "Enter password in 20 seconds(again)> " pass2 && printf "\n" && #判斷兩次輸入的密碼是否相等 if [[ $pass1 == $pass2 ]];then echo "Valid password" else echo "Invalid password" exit 1 fi
echo -e -n "\033[31m";read -p "input: " TEST;echo -e "\033[0m"
#!/bin/bash #第一次輸入密碼 echo -e -n "\033[34m";read -t 20 -sp "Enter password in 20 seconds(once) > " pass1;echo -e "\033[0m" #第二次輸入密碼 echo -e -n "\033[34m";read -t 20 -sp "Enter password in 20 seconds(again)> " pass2;echo -e "\033[0m" #判斷兩次輸入的密碼是否相等 if [[ $pass1 == $pass2 ]];then echo "Valid password" else echo "Invalid password" exit 1 fi