關注我,不迷路,大家好,我是大王。--Linux運維
一、背景說明
對于一個運維人員來說,跟 read 指令打交道的次數肯定不少,特别是寫腳本時,今天來說一說 read 指令的那些事。
二、read 指令簡介
read指令是Linux系統中的一個内置指令,主要用于從标準輸入或檔案中讀取資料,并将讀取的資料指派給一個變量。
該指令常用于shell腳本中,用于互動式地擷取使用者輸入或從檔案中逐行讀取資料。
三、read 指令基本文法及參數
read 指令的基本文法為:
read [選項] [變量名1 變量名2 ...]
參數解釋:
[選項]:可選參數,用于設定read指令的行為。
[變量名1 變量名2 ...]:指定要将輸入的文本指派給的變量名,可以是一個或多個變量。
read 指令的選項
- -p:指定互動式提示符,用于提示使用者輸入資料。
- -t:指定逾時時間,如果在指定的時間内沒有輸入資料,則指令會直接傳回并退出。
- -n:指定讀取資料的長度,即讀取指定長度的字元後就立即傳回。
- -r:禁用反斜杠轉義字元的特殊處理。
- -s:使輸入以靜默模式進行,使用者輸入的内容不會顯示在螢幕上。
- -d:以指定的分隔符delim作為結束輸入的标志。
四、read 指令執行個體示範
4.1 從标準輸入讀取資料
## 方式一:
#!/bin/bash
echo "請輸入您的姓名:"
read name
echo "您好,您的名字為:$name!"
## 方式二【使用 -p 參數】:
#!/bin/bash
read -p "請輸入您的姓名:" name
echo "您好,您的名字為:$name!"
運作效果如下:
4.2 加密讀取
讀取使用者輸入的密碼,但不顯示在螢幕上:
#!/bin/bash
read -p "請輸入您的姓名:" name
read -s -p "請輸入您的密碼:" passwd
echo " "
echo "您好,您的名字為:$name!,密碼為:$passwd"
效果如下
4.3 從檔案中讀取資料
#!/bin/bash
echo "請輸入檔案名:"
read filename
if [ -f "$filename" ]; then
while read line; do
echo "檔案内容如下顯示:$line"
done < "$filename"
else
echo "檔案不存在!"
fi
腳本作用:提示使用者輸入檔案名,然後檢查檔案是否存在,如果存在則逐行讀取檔案内容并輸出
效果如下
4.4 指定提示符和逾時時間
#!/bin/bash
read -p "請輸入您的使用者名:" username
read -t 5 -p "請輸入您的密碼:" password
if [ "$password" == "123456" ]; then
echo "登入成功!歡迎您,$username。"
else
echo "登入失敗!密碼錯誤。"
fi
該腳本會先提示使用者輸入使用者名,然後等待5秒鐘以内輸入密碼,如果輸入了正确的密碼,則輸出登入成功消息,否則輸出登入失敗消息。
效果如下:
4.5 指定讀取字元個數
當讀取到指定的字元後就會自動結束,不會繼續讀取
#!/bin/bash
# 讀取到前5個字元後自動結束
read -n 5 -p "請随便輸入5個字元: " input
echo ""
echo "您輸入的5個字元是: $input"
效果如下: