天天看點

Linux運維之read指令詳解

作者:羊毛與狗

關注我,不迷路,大家好,我是大王。--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!"           

運作效果如下:

Linux運維之read指令詳解

4.2 加密讀取

讀取使用者輸入的密碼,但不顯示在螢幕上:

#!/bin/bash
read -p  "請輸入您的姓名:" name
read -s -p "請輸入您的密碼:" passwd
echo " "
echo "您好,您的名字為:$name!,密碼為:$passwd"           

效果如下

Linux運維之read指令詳解

4.3 從檔案中讀取資料

#!/bin/bash
echo "請輸入檔案名:"
read filename
if [ -f "$filename" ]; then
    while read line; do
        echo "檔案内容如下顯示:$line"
    done < "$filename"
else
    echo "檔案不存在!"
fi           

腳本作用:提示使用者輸入檔案名,然後檢查檔案是否存在,如果存在則逐行讀取檔案内容并輸出

效果如下

Linux運維之read指令詳解

4.4 指定提示符和逾時時間

#!/bin/bash
read -p "請輸入您的使用者名:" username
read -t 5 -p "請輸入您的密碼:" password
if [ "$password" == "123456" ]; then
    echo "登入成功!歡迎您,$username。"
else
    echo "登入失敗!密碼錯誤。"
fi           

該腳本會先提示使用者輸入使用者名,然後等待5秒鐘以内輸入密碼,如果輸入了正确的密碼,則輸出登入成功消息,否則輸出登入失敗消息。

效果如下:

Linux運維之read指令詳解

4.5 指定讀取字元個數

當讀取到指定的字元後就會自動結束,不會繼續讀取

#!/bin/bash
# 讀取到前5個字元後自動結束
read -n 5 -p "請随便輸入5個字元: " input
echo ""
echo "您輸入的5個字元是: $input"           

效果如下:

Linux運維之read指令詳解

繼續閱讀