zoukankan      html  css  js  c++  java
  • (转)Shell中read的用法详解

    Shell中read的用法详解

    原文:http://blog.csdn.net/jerry_1126/article/details/77406500

    read的常用用法如下:

    read -[pstnd] var1 var2 ...

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

    [plain] view plain copy
     
    1. 01). read                           # 从标准输入读取一行并赋值给特定变量REPLY  
    2. root@linux~# read  
    3. Hello,World!  
    4. root@linux~# echo $REPLY  
    5. Hello,World!  
    6.   
    7. 02). read name                      # 从标准输入读取输入并赋值给变量name  
    8. root@linux~# read name  
    9. Jerry  
    10. root@linux~# echo $name  
    11. Jerry  
    12.   
    13. 03). read var1 var2                 # 第一个变量放置于var1,第二个变量放到var2    
    14. root@linux~# read firstname lastname  
    15. Jerry Gao  
    16. root@linux~# echo "firstname:$firstname lastname:$lastname"  
    17. firstname:Jerry lastname:Gao  
    18.   
    19. 04). read -p "text"                 # 打印提示'text',等待输入,并将输入存储在REPLY中  
    20. root@linux~# read -p 'Please Enter your name:-->'  
    21. Please Enter your name:-->Jerry  
    22. root@linux~# echo $REPLY  
    23. Jerry  
    24.   
    25. 05). read -p "text" var             # 打印提示'text',等待输入,并将输入存储在VAR中  
    26. root@linux~# read -p 'Please Enter your name:-->' name  
    27. Please Enter your name:-->Jerry  
    28. root@linux~# echo $name  
    29. Jerry  
    30.   
    31. 06). read -p "text" var1  var2      # 打印提示'text',等待输入,将变量分别存储在var1,var2...  
    32. root@linux~# read -p 'What your name? ' firstname lastname  
    33. What your name? Jerry Gao  
    34. root@linux~# echo "Firstname:$firstname Lastname:$lastname"  
    35. Firstname: Jerry Lastname:Gao  
    36.   
    37. 07). read -r line                   # 允许输入包含反斜杠  
    38. root@linux~# read line              # 不带-r参数;则反斜杠不显示  
    39. This is line 1.  This is line 2.  
    40. root@linux~# echo $line  
    41. This is line 1. This is line 2.  
    42.   
    43. root@linux~# read -r line           # 带-r参数;则反斜杠正常显示显示  
    44. This is line 1.  This is line 2.  
    45. root@linux~# echo $line  
    46. This is line 1.  This is line 2.  
    47.   
    48. 08). read -t 5                      # 指定读取等待时间为5秒  
    49. root@linux~# read -t 5 -p 'Your Name:' name  
    50. Your Name:Jerry  
    51. root@linux~# echo $name             # 如果5秒还未输入,则不能输入  
    52. Jerry  
    53.   
    54. 09). read -a arrayname              # 把单词清单读入arrayname的数组里  
    55. root@linux~# read -a citys  
    56. BJ SH CD GZ  
    57. root@linux~# echo ${citys[*]}  
    58. BJ SH CD GZ  
    59. root@linux~# echo ${citys[0]}  
    60. BJ  
    61.   
    62. 10). read -s -p "pwd:" pwd      # 使用-s参数可以不显示用户的输入  
    63. root@linux~# read -p "Enter Your Password:" -s PASSWORD  
    64. Enter Your Password:  
    65. root@linux~#  
    66. root@linux~# echo $PASSWORD         # 刚才输入的密码为:1234  
    67. 1234  
    68.   
    69.   
    70. 11). read -n 1 -p "Sure?(y/n):"     # 使用-n,来确定参数个数  
    71. root@linux~# read -n 1 -p "Are you sure?(y/n): " ANSWER  
    72. Are you sure?(y/n): y                
    73. root@linux~#  
    74. root@linux~# echo -e "Your ANSWER is: $ANSWER"  
    75. Your ANSWER is: y  
    76.   
    77. 12). read -d ":" var                # 使用:作为输入分界符  
    78. root@linux~# read -d ";" -p "Enter Your Name:" name  
    79. Enter Your Name:Jerry Gao;  
    80. root@linux~# echo -e "Your Name: $name"  
    81. Your Name: Jerry Gao  



    read在脚本中的应用:

    遍历方式一:

    [python] view plain copy
     
    1. #!/bin/bash  
    2.   
    3. count=0  
    4.   
    5. while read line  
    6. do  
    7.     echo -e "$count:-->$line"  
    8.     count=$[ count + 1]  
    9. done < /etc/passwd  

    遍历方式二:

    [python] view plain copy
     
      1. #!/bin/bash  
      2.   
      3. awk -F: '{print $1,$7}' /etc/passwd | while read user bash  
      4. do  
      5.     echo -e "USER=$user; BASH=$bash"  
      6. done  
  • 相关阅读:
    ESlint中console.log报错问题
    for、forEach、for in、for of用法
    如何覆盖elementUI样式
    什么是闭包(closure),为什么要用它?
    写一个通用的事件侦听器函数
    javascripts 浅拷贝和深拷贝
    箭头函数
    用 async/await 来处理异步
    DOM事件类
    arguments 详解
  • 原文地址:https://www.cnblogs.com/liujiacai/p/7821228.html
Copyright © 2011-2022 走看看