指令名稱:
語法:
說明:
指令負責讀取標準輸入的輸入。被讀取的第一個引數指定給第一個變數,第二個引數指定給第二個變數,以下類推。如果對應也所剩餘,則剩餘的引數會全部給最後一個變數。如果對應有所不足,沒有引數對應的變數其內容為空。
選項:
- -a aname
- 讀取標準輸入到指定的陣列變數(aname)。值由 0 開始計算。陣列變數在讀取資料前會自動清空容。
- -d delim
- 用 delim 指定第一個字元(所以需入一個字元即可),來做為結束輸入的字元。
- -e
- 假使標準輸入來自終端機,使用 readline 讀取。
- -n nchars
- 在讀取指定的字元數後,自動結束。
- -p prompt
- 以標準錯誤顯示指定的提示。同時 newline 省略。
- -r
- 關閉符號倒斜線的 escape 定義。
- -s
- 沉默模式,從終端機讀取字元時不回應任何顯示。
- -t timeout
- 設定輸入的時間限制,單位秒。當超過時限未輸入資料,read 將自動終結,執行狀態值為 1。
- -u fd
- 從檔案描述 fd 讀取輸入。
實例說明:
# cat read00 #!/bin/bash read -p "S/N: " sn1 sn2 sn3 echo "sn1 $sn1" echo "sn2 $sn2" echo "sn3 $sn3" # |
上例是個非常簡單的 script。指令 read 指定了 sn1 sn2 sn3 三個變數來接收標準輸入的引數。以下是執行的情況
# read00 ## read00 |
使用 echo 所輸出的,就是鍵入的引數與 sn1, sn2, sn3 變數的對應結果。這是 read 指令預設的做法。
陣列變數的使用
# cat read-a |
read 指令支援 -a 選項用來宣告陣列變數。上例是,基本的使用與呼叫,以下是執行的情況。
# read-a |
設定輸入的時間限制
選項 -t 支援"限時"的功能,這對偷懶或做到一半喜歡亂跑的執行者來說,是個不錯的功能。在下例中,我設定的5秒的時間,一旦超過這個時間沒有輸入,script 會自動終止執行。
# cat read-t |
來看看她逾時不候的情況及正常的執行狀態
# read-t # read-t |
自訂輸入終止字元
一般情況下,我們都是以 return 來終止資料的輸入。但,如果有一天,我們 return 字元也是資料輸入的一部分時,怎麼辦?
選項 -d 可以幫我們解決這個問題。
# cat read-d |
上例,我指定符號 . 來做為輸入終止的符號。因此在輸入數字時,使用 return 就不會中斷我的輸入了。這對某些輸入提供了相當的便利性。
# read-d |
限定輸入字元數
使用 -n 選項,可以讓我們控制輸入的字元數,當輸入到設定的字元數目時,read會自動終結。
# cat read-n |
在 script 撰寫中 read 算是一個相當常用的指令,以上的幾種型態的運用,算是 script 撰寫的基礎。這篇暫時到此。
没有评论:
发表评论