Shell中read命令的使用技巧

read命令的功能:
1.Linux read命令用於從標準輸入讀取數值。
2.read 內部命令被用來從標準輸入讀取單行數據。這個命令可以用來讀取鍵盤輸入,當使用重定向的時候,可以讀取文件中的一行數據。

read命令常用的選項:

選項 作用
-p 後面跟提示信息,即在輸入前打印提示信息
-s 靜默輸入,在輸入字符時不再屏幕上顯示,一般都是用於輸入密碼
-n 後跟一個數字,指定輸入的字符長度最大值
N 嚴格要求讀滿N個字符才自動結束讀取,即使中途按下了回車或遇到了換行符也不結束。其中換行符或回車算一個字符。
-r 屏蔽\,如果沒有該選項,則\作爲一個轉義字符,有的話 \就是個正常的字符了
-d 後面跟一個標誌符,其實只有其後的第一個字符有用,作爲結束的標誌
-t 後面跟秒數,定義輸入字符的等待時間n秒,超出n秒沒有輸入則自動退出

實例:
1.-p與-s選項的結合使用:

#!/bin/bash
read -s -p "輸入密碼:" pass   //在運行腳本時在屏幕上不顯示輸入
if [ "${pass}" == "abc" ];then
   echo  "輸入密碼正確"
fi

2.-t與-p選項的結合使用:

#!/bin/bash
read -t 5 -p "輸入:" a //運行腳本後超過5秒沒有輸入,則自動退出腳本
if [ "$a" == "abc" ];then
   echo "輸入正確"
else
   echo "輸入不正確"
fi

如果給出輸入時間限制,沒完成輸入,腳本自動退出,變量將賦值爲空(如果在執行read前,變量已被賦值,則此變量在read超時後將被覆蓋爲空)

3.-n與-p選項的結合使用:

#!/bin/bash
read  -n1 -p "輸入[Y/N]:" a //限制了只能輸入一個字符,輸入一個字符之後腳本馬上執行下一步
case $a in
Y|y)
     echo "yes"
     ;;
N|n)
     echo "NO"
     ;;
*)
     echo "您的輸入有誤"
     ;;
esac

4.-d與-p選型的結合使用:

#!/bin/bash
read  -d '/' -p "輸入:" a //這裏指定的結束標誌符爲'/'不管輸入多少個字符,只有輸入了'/'腳本才執行下一步,
不然就算按回車也只能算是多一個字符,腳本並不會執行下一步
echo ""
echo $a

5.-r與-p選項的結合使用:
a.沒使用-r選項之前:

#!/bin/bash
read -p "輸入:" a
echo $a

運行腳本:
在這裏插入圖片描述
直接轉義,相當於換行輸入。
b.使用-r選項:

#!/bin/bash
read -r -p "輸入:" a
echo $a

在這裏插入圖片描述
禁止"“的轉義,結果連”"一起輸出

6.讀取文件,就我個人而言,一般用在while循環比較多
創建一個文件1.txt,裏面內容格式爲:
1
2
3
4

#!/bin/bash
sum=0
while read line  //讀取1.txt文件的內容,做求和的動作
do
    sum=$[sum+${line}]
done < 1.txt
echo ${sum}

補充:
1.break:當判斷條件成立後,break,循環到此結束,不會再給它賦值,跳出循環,但是沒有退出腳本,break後面的腳本內容依然會執行。
2.continue:當判斷條件滿足後,continue會跳過下面的代碼,直接進行新的賦值,執行上面的循環。
3.exit:當循環滿足了判定條件後,exit直接就退出了腳本,不會再運行任何的腳本中的指令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章