第二十九天:read

做用
從標準輸入中讀取一行。

語法
read [ -p ][  -r ][ -s ][ -u[ n ] ] [  VariableName?Prompt ][ VariableName ... ]

描述
read 命令從標準輸入中讀取一行,並把輸入行的每一個字段的值指定給 shell 變量,用 IFS(內部字段分隔符)變量中的字符做爲分隔符。VariableName 參數指定 shell 變量的名稱,shell 變量獲取輸入行一個字段的值。由VariableName 參數指定的第一個 shell 變量指定給每個字段的值,由 VariableName 參數指定的第二個 shell 變量指定給第二個字段的值,以此類推,直到最後一個字段。若是標準輸入行的字段比相應的由 VariableName 參數指定的 shell 變量的個數多,把所有餘下的字段的值賦給指定的最後的 shell 變量。若是比 shell 變量的個數少,則剩餘的 shell 變量被設置爲空字符串。
注意: 若是省略了 VariableName 參數,變量 REPLY 用做缺省變量名。
由 read 命令設置的 shell 變量影響當前 shell 執行環境。

標誌
-p 用 |& (管道,& 的記號名稱)讀取由 Korn shell 運行的進程的輸出做爲輸入。
注:-p 標誌的文件結束符引發該進程的清除,所以產生另一個進程。
-r 指定讀取命令把一個 \ (反斜槓) 處理爲輸入行的一部分,而不把它做爲一個控制字符。
-s 把輸入做爲一個命令保存在 Korn shell 的歷史記錄文件中。
-u [ n ] 讀取一位數的文件描述符號碼 n 做爲輸入。文件描述符能夠用 ksh exec 內置命令打開。n 的缺省值是 0,表示的是鍵盤。值 2 表示標準錯誤。

參數
VariableName?Prompt 指定一個變量的名稱和一個要使用的提示符。當 Korn shell 是交互式時,它將把提示符寫到標準錯誤,並執行輸入。Prompt 包含多於一個的字,必須用單引號或雙引號括起來。
VariableName... 指定一個或多個由空格分隔的變量名。

退出狀態
這個命令返回下列出口值:
0 成功完成。
>0 檢測到文件結束符或一個錯誤發生。

一、基本讀取
read命令接收標準輸入(鍵盤)的輸入,或其餘文件描述符的輸入(後面在說)。獲得輸入後,read命令將數據放入一個標準變量中。
read name
因爲read命令提供了-p參數,容許在read命令行中直接指定一個提示。
read -p "Enter your name:" name
二、計時輸入.
 -t選項指定read命令等待輸入的秒數。當計時滿時,read命令返回一個非零退出狀態;
read -t 5 -p "please enter your name:" name
除了輸入時間計時,還能夠設置read命令計數輸入的字符。當輸入的字符數目達到預約數目時,自動退出,並將輸入的數據賦值給變量。
- read -n1 -p "Do you want to continue [Y/N]?" answer
該例子使用了-n選項,後接數值1,指示read命令只要接受到一個字符就退出。只要按下一個字符進行回答,read命令當即
接受輸入並將其傳給變量。無需按回車鍵
三、默讀(輸入不顯示在監視器上)
-s選項可以使read命令中輸入的數據不顯示在監視器上(實際上,數據是顯示的,只是 read命令將文本顏色設置成與背景相同的顏色)。
read  -s  -p "Enter your password:" pass
四、讀文件
使用read命令讀取Linux系統上的文件
每次調用read命令都會讀取文件中的"一行"文本。當文件沒有可讀的行時,read命令將以非零狀態退出。
最經常使用的方法是對文件使用cat命令並經過管道將結果直接傳送給包含read命令的 while命令
- #!/bin/bash
- count=1    //賦值語句,不加空格
- cat test | while read line        //cat 命令的輸出做爲read命令的輸入,read讀到的值放在line中
- do
-    echo "Line $count:$line"
-    count=$[ $count + 1 ]          //注意中括號中的空格。
- done
- echo "finish"
- exit 0
相關文章
相關標籤/搜索