Bash shell提供了一些不同的方法來從用戶處獲得數據,包括以下3中方法:
13.3-獲得用戶輸入(read命令)
read命令從鍵盤讀取變量的值,通常用在shell腳本中與用戶進行交互的場合。
該命令可以一次讀取多個變量的值,變量和輸入的值都需要使用空格隔開。
參數:
- -a 后跟一個變量,該變量會被認為是個數組,然后給其賦值,默認是以空格為分割符。
- -d 后面跟一個標志符,其實只有其后的第一個字符有用,作為結束的標志,會舉例說 明。
- -p 后面跟提示信息,即在輸入前打印提示信息。
- -e 在輸入的時候可以時候命令補全功能。
- -n 后跟一個數字,定義輸入文本的長度,很實用。
- -r 屏蔽,如果沒有該選項,則作為一個轉義字符,有的話 就是個正常的字符了。
- -s 安靜模式/隱藏方式讀取,在輸入字符時不再屏幕上顯示,例如login時輸入密碼。
- -t 后面跟秒數,定義輸入字符的等待時間 超時模式
- -u 后面跟fd,從文件描述符中讀入,該文件描述符可以是exec新開啟的。
- 在read命令后面,如果沒有指定變量名,讀取的數據將被自動賦值給特定的變量REPLY
簡單的一些常用的使用方式:
- read 1988name 從標准輸入讀取輸入並賦值給變量1987name。
- read first last 從標准輸入讀取輸入到第一個空格或者回車,將輸入的第一個單詞放到變量first中,並將該行其他的輸入放在變量last中。
- read 從標准輸入讀取一行並賦值給特定變量REPLY。
- read -a arrayname 把單詞清單讀入arrayname的數組里。
- read -p "text" 打印提示(text),等待輸入,並將輸入存儲在REPLY中。
- read -r line 允許輸入包含反斜杠。
- read -t 3 指定讀取等待時間為3秒。
- read -n 2 var 從輸入中讀取兩個字符並存入變量var,不需要按回車讀取。
- read -d ":" var 用定界符“:”結束輸入行
舉例1:
舉例2:
舉例3:
舉例4:
舉例5: