read命令用於從標準輸入讀取數值。
read 內部命令被用來從標準輸入讀取單行資料。這個命令可以用來讀取鍵盤輸入,當使用重定向的時候,可以讀取檔案中的一行資料。
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-n nchars] [-p prompt] [-t timeout] [-u fd] [name …]引數說明:
-a 後跟乙個變數,該變數會被認為是個陣列,然後給其賦值,預設是以空格為分割符。
-d 後面跟乙個標誌符,其實只有其後的第乙個字元有用,作為結束的標誌。
-p 後面跟提示資訊,即在輸入前列印提示資訊。
-e 在輸入的時候可以使用命令補全功能。
-n 後跟乙個數字,定義輸入文字的長度,很實用。
-r 遮蔽\,如果沒有該選項,則\作為乙個轉義字元,有的話 \就是個正常的字元了。
-s 安靜模式,在輸入字元時不再螢幕上顯示,例如login時輸入密碼。
-t 後面跟秒數,定義輸入字元的等待時間。
-u 後面跟fd,從檔案描述符中讀入,該檔案描述符可以是exec新開啟的。
簡單讀取
#!/bin/bash
#這裡缺省會換行
echo "輸入**名: "
#讀取從鍵盤的輸入
read website
echo "你輸入的**名是 $website"
exit 0
#退出
測試結果為:
輸入**名:
www.runoob.com
你輸入的**名是 www.runoob.com
-p 引數,允許在 read 命令列中直接指定乙個提示。
#!/bin/bash
read -p "輸入**名:" website
echo "你輸入的**名是 $website"
exit 0
測試結果為:
輸入**名:www.runoob.com
你輸入的**名是 www.runoob.com
-t 引數指定 read 命令等待輸入的秒數,當計時滿時,read命令返回乙個非零退出狀態。
#!/bin/bash
if read -t 5
-p "輸入**名:" website
then
echo "你輸入的**名是 $website"
else
echo "\n抱歉,你輸入超時了。"
fiexit 0
執行程式不輸入,等待 5 秒後:
輸入**名:
抱歉,你輸入超時了
除了輸入時間計時,還可以使用 -n 引數設定 read 命令計數輸入的字元。當輸入的字元數目達到預定數目時,自動退出,並將輸入的資料賦值給變數。
#!/bin/bash
read -n1 -p "do you want to continue [y/n]?" answer
case $answer in
y | y)
echo "fine ,continue";;
n | n)
echo "ok,good bye";;
*)echo "error choice";;
esac
exit 0
該例子使用了-n 選項,後接數值 1,指示 read 命令只要接受到乙個字元就退出。只要按下乙個字元進行回答,read 命令立即接受輸入並將其傳給變數,無需按回車鍵。
只接收 2 個輸入就退出:
#!/bin/bash
read -n2 -p "請隨便輸入兩個字元: "
anyecho "\n您輸入的兩個字元是:$any"
exit 0
執行程式輸入兩個字元:
請隨便輸入兩個字元:
12您輸入的兩個字元是:
12
-s 選項能夠使 read 命令中輸入的資料不顯示在命令終端上(實際上,資料是顯示的,只是 read 命令將文字顏色設定成與背景相同的顏色)。輸入密碼常用這個選項。
#!/bin/bash
read -s -p "請輸入您的密碼:"
pass
echo "\n您輸入的密碼是 $pass"
exit 0
執行程式輸入密碼後是不顯示的:
請輸入您的密碼:
您輸入的密碼是 runoob
讀取檔案
每次呼叫 read 命令都會讀取檔案中的 「一行」 文字。當檔案沒有可讀的行時,read 命令將以非零狀態退出。
通過什麼樣的方法將檔案中的資料傳給 read 呢?使用 cat 命令並通過管道將結果直接傳送給包含 read 命令的 while 命令。
測試檔案 test.txt 內容如下:
123
456runoob
測試**:
#!/bin/bash
count=
1# 賦值語句,不加空格
cat test.txt |
while read line # cat 命令的輸出作為read命令的輸入,read讀到》的值放在line中
do echo "line $count:$line"
count=$[ $count +1]
# 注意中括號中的空格。
done
echo "finish"
exit 0
執行結果為:
line 1
:123
line 2
:456
line 3
:runoob
finish
$ read -e -p "輸入檔名:"
str
輸入檔名:a
a.out a.py a.pyc abc.txt
輸入檔名:a
命令二十 chmod
檔案或目錄的許可權包括唯讀,可寫和可執行3種,唯讀表示只能讀取檔案的內容,可寫表示檔案內容可以被修改,可執行表示檔案內容是可以執行的。一般來說,檔案建立時建立者自動擁有這三種許可權。linux系統中有3中使用者型別 檔案所有者,同使用者組使用者,其他使用者。現使用ls l檢視檔案的使用者許可權 ro...
Linuxc基礎 二十三
位運算子 1 位操作需要用巨集定義好後在使用。2 如果位操作符 和 3 位運算不能用於基本型別是有符號的運算元上。4 一元減運算子不能用在基本型別無符號的表示式上,除非在使用之前對兩個運算元進行大小判斷,且被減數必須大於減數。左移和右移是雙目運算子。和 作為字首是先自加或自減然後再做別的運算。和 作...
Linux基礎(二十三)
進入linux字元介面方式有字元介面 圖形介面下的終端以及虛擬控制台等方式。在字元介面下,虛擬控制台的選擇可以通過按下 alt 鍵和1個功能鍵來實現,功能鍵通常為f1 f6鍵。比如使用者登入後,按下 alt f2 鍵,使用者可以看 login 提示符,說明使用者進入了第2個虛擬控制台。然後只需利用按...