Shell中read的用法详解


read -[pstnd] var1 var2 ...

-p 提示语句
-n 字符个数
-s 屏蔽回显
-t 等待时间
-d 输入分界




  1. 01). read                           # 从标准输入读取一行并赋值给特定变量REPLY  
  2. root@linux~# read  
  3. Hello,World!  
  4. root@linux~# echo $REPLY  
  5. Hello,World!  

  6. 02). read name                      # 从标准输入读取输入并赋值给变量name  
  7. root@linux~# read name  
  8. Jerry  
  9. root@linux~# echo $name  
  10. Jerry  

  11. 03). read var1 var2                 # 第一个变量放置于var1,第二个变量放到var2    
  12. root@linux~# read firstname lastname  
  13. Jerry Gao  
  14. root@linux~# echo "firstname:$firstname lastname:$lastname"  
  15. firstname:Jerry lastname:Gao  

  16. 04). read -p "text"                 # 打印提示'text',等待输入,并将输入存储在REPLY中  
  17. root@linux~# read -p 'Please Enter your name:-->'  
  18. Please Enter your name:-->Jerry  
  19. root@linux~# echo $REPLY  
  20. Jerry  

  21. 05). read -p "text" var             # 打印提示'text',等待输入,并将输入存储在VAR中  
  22. root@linux~# read -p 'Please Enter your name:-->' name  
  23. Please Enter your name:-->Jerry  
  24. root@linux~# echo $name  
  25. Jerry  

  26. 06). read -p "text" var1  var2      # 打印提示'text',等待输入,将变量分别存储在var1,var2...  
  27. root@linux~# read -p 'What your name? ' firstname lastname  
  28. What your name? Jerry Gao  
  29. root@linux~# echo "Firstname:$firstname Lastname:$lastname"  
  30. Firstname: Jerry Lastname:Gao  

  31. 07). read -r line                   # 允许输入包含反斜杠  
  32. root@linux~# read line              # 不带-r参数;则反斜杠不显示  
  33. This is line 1. \ This is line 2.  
  34. root@linux~# echo $line  
  35. This is line 1. This is line 2.  

  36. root@linux~# read -r line           # 带-r参数;则反斜杠正常显示显示  
  37. This is line 1. \ This is line 2.  
  38. root@linux~# echo $line  
  39. This is line 1. \ This is line 2.  

  40. 08). read -t 5                      # 指定读取等待时间为5秒  
  41. root@linux~# read -t 5 -p 'Your Name:' name  
  42. Your Name:Jerry  
  43. root@linux~# echo $name             # 如果5秒还未输入,则不能输入  
  44. Jerry  

  45. 09). read -a arrayname              # 把单词清单读入arrayname的数组里  
  46. root@linux~# read -a citys  
  47. BJ SH CD GZ  
  48. root@linux~# echo ${citys[*]}  
  49. BJ SH CD GZ  
  50. root@linux~# echo ${citys[0]}  
  51. BJ  

  52. 10). read -s -p "pwd:" pwd      # 使用-s参数可以不显示用户的输入  
  53. root@linux~# read -p "Enter Your Password:" -s PASSWORD  
  54. Enter Your Password:  
  55. root@linux~#  
  56. root@linux~# echo $PASSWORD         # 刚才输入的密码为:1234  
  57. 1234  


  58. 11). read -n 1 -p "Sure?(y/n):"     # 使用-n,来确定参数个数  
  59. root@linux~# read -n 1 -p "Are you sure?(y/n): " ANSWER  
  60. Are you sure?(y/n): y                
  61. root@linux~#  
  62. root@linux~# echo -e "Your ANSWER is: $ANSWER"  
  63. Your ANSWER is: y  

  64. 12). read -d ":" var                # 使用:作为输入分界符  
  65. root@linux~# read -d ";" -p "Enter Your Name:" name  
  66. Enter Your Name:Jerry Gao;  
  67. root@linux~# echo -e "Your Name: $name"  
  68. Your Name: Jerry Gao  





read在脚本中的应用:

遍历方式一:



  1. #!/bin/bash  

  2. count=0  

  3. while read line  
  4. do  
  5.     echo -e "$count:-->$line"  
  6.     count=$[ count + 1]  
  7. done < /etc/passwd  


遍历方式二:


    1. #!/bin/bash  

    2. awk -F: '{print $1,$7}' /etc/passwd | while read user bash  
    3. do  
    4.     echo -e "USER=$user; BASH=$bash"  
    5. done