1. 程式人生 > >第二章 從鍵盤或文件中獲取標準輸入:read命令

第二章 從鍵盤或文件中獲取標準輸入:read命令

read命令 從鍵盤或文件中獲取標準輸入

第二章 從鍵盤或文件中獲取標準輸入:read命令

read命令

從鍵盤讀取變量的值,通常用在shell腳本中與用戶進行交互的場合。該命令可以一次讀多個變量的值,變量和輸入的值都需要使用空格隔開。在read命令後面,如果沒有指定變量名,讀取的數據將被自動賦值給特定的變量REPLY

語法

read (選項) (參數)

選項:

?   -p    指定讀取值時候的提示符

?   -t     指定讀取值時候等待的時間(秒)

參數:

?   變量 :指定讀取值得變量名

查看變量值:

echo $變量名

printf $變量名

註意:使用echo或printf 輸出變量值時,必須在變量名前加$,否則輸出變量名。

實例

常用的read命令方式

  1. read name
    從標準輸入讀取內容  並賦值給變量name
    
    如:
    [root@ceshi ~]# read name
    abc
    [root@ceshi ~]# echo $abc
    123
    
    也可以寫成腳本
    [root@ceshi ~]# vi shili.sh        
    #!/bin/bash
    read name
    echo "你輸入的名字是:"$name
    
    運行:
    [root@ceshi ~]# /bin/bash shili.sh 
    小王
    你輸入的名字是:小王
  2. read first second
    從標準輸入讀取內容,當遇到第一個空格(這裏只能輸入空格,輸入回車程序就退出了) 將輸入的第一個單詞賦值給first;將剩下的賦值給second
    
    如:
    [root@ceshi ~]# vi shili.sh        
    #!/bin/bash
    read name age
    echo "你輸入的名字是:"$name "你輸入的年齡是:"$age
    
    運行:
    [root@ceshi ~]# /bin/bash shili.sh 
    小王 22 IT
    你輸入的名字是:小王 你輸入的年齡是:22 IT
  3. read
    從標準輸入讀取到的一行內容賦值給特定變量REPLY
    
    如:
    [root@ceshi ~]# vi shili2.sh
    #!/bin/bash
    read
    echo $REPLY
    
    [root@ceshi ~]# /bin/bash shili2.sh 
    小王 22 it
    小王 22 it
  4. read -a arrayname
    把單詞清單讀入arrayname的數組裏
    
    如:
    [root@ceshi ~]# read -a info
    小王 22 IT
    [root@ceshi ~]# echo "你的名字是${info[0]},你的年齡是${info[1]},你的行業是${info[2]}"
    你的名字是小王,你的年齡是22,你的行業是IT

    ?

  5. read -p "text"
    打印提示text,等待輸入,並將輸入內容賦值給REPLY中。
    
    如:
    [root@ceshi ~]# read -p "輸入密碼"
    輸入密碼abc123
    [root@ceshi ~]# echo $REPLY
    abc123
    
    補充:輸入密碼,不讓密碼顯示出來
    方法一:
    [root@ceshi ~]# read -p "輸入密碼" -s pwd
    輸入密碼 
    [root@ceshi ~]# echo $pwd         
    abc123
    -s :代表不顯示終端輸入內容
    
    方法二:
    [root@ceshi ~]# vi mima.sh        
    #!/bin/bash
    stty -echo       # -echo 表示禁止將輸出發送到終端
    read -p "輸入密碼:" pwd
    stty echo    # echo 則允許發送輸出
    echo     
    echo $pwd
    echo 輸入完畢
    
    [root@ceshi ~]# /bin/bash mima.sh 
    輸入密碼:
    abc123456
    輸入完畢

    ?

  6. read -r line
    允許輸入包含反斜杠
    
    [root@ceshi ~]# read -r line
    abc\abc
    [root@ceshi ~]# echo $line
    abc\abc

    ?

  7. read -t 3
    指定讀取等待時間為3秒

    ?

  8. read -n 2 var
    從輸入中讀取兩個字符並存入變量var,不需要按回車讀取。
    
    如:
    [root@ceshi ~]# read -n 2 var
    你好       # 當輸完你好,夠了兩個字符,程序就自動結束了
    
    [root@ceshi ~]# echo $var
    你好

    ?

  9. read -d ":" var
    用 定界符 冒號 結束輸入行(也就是說冒號 就等於回車)
    
    如:
    [root@ceshi ~]# read -d ":" var
    abc:
    [root@ceshi ~]# read -d ":" var2
    123:
    
    [root@ceshi ~]# echo $var
    abc
    [root@ceshi ~]# echo $var2
    123
    
    當然也可以設置別的結束符
    [root@ceshi ~]# read -d "r" var3
    456r
    [root@ceshi ~]# echo $var3
    456

    ?

第二章 從鍵盤或文件中獲取標準輸入:read命令