1. 程式人生 > 實用技巧 >shell腳本系列:read用法

shell腳本系列:read用法

選項說明

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