zoukankan      html  css  js  c++  java
  • [转]Shell中read的常用方式

    原文:Linux Shell Scripting Tutorial V2.0

    read命令的语法:

    [java] view plain copy
     
     print?
    1. read -p "Prompt" variable1 variable2 variableN  


    -p "Prompt": 显示提示信息(和用户输入同一行显示)

    variable1: 用户输入的第一个值将赋给variable1

    variable2: 用户输入的第二个值将赋给variable2

    处理输入

    创建名为greet.sh的文件,输入:
    [java] view plain copy
     
     print?
    1. #!/bin/bash  
    2. read -p "Enter your name : " name  
    3. echo "Hi, $name. Let us be friends!"  

    保存并关闭文件,在命令行中输入:
    [java] view plain copy
     
     print?
    1. chmod +x greet.sh  
    2. ./greet.sh   

    输出:
    [java] view plain copy
     
     print?
    1. <pre name="code" class="java">Enter your name : Tomcat  
    2. Hi, Tomcat. Let us be friends!</pre>  
    3. <pre></pre>  
    4. <br>  
    下面是一个示例文件,用于显示用户输入的域名信息:
    [java] view plain copy
     
     print?
    1. #!/bin/bash  
    2. read -p "Enter the Internet domain name (e.g. nixcraft.com) : "  
    3. domain_name  
    4. whois $domain_name  

    时间设置

    可以使用 -t 参数来限制用户的输入时间。例如,使用下面的命令设置用户在10秒内输入参数:
    [java] view plain copy
     
     print?
    1. #!/bin/bash  
    2. read -t 10 -p "Enter the Internet domain name (e.g. nixcraft.com) : "  
    3. domain_name  
    4. whois $domain_name  

    输入密码

    使用 -s 参数可以不显示用户的输入。示例如下:
    [java] view plain copy
     
     print?
    1. #!/bin/bash  
    2. read -s -p "Enter Password : " my_password  
    3. echo  
    4. echo "Your password - $my_password"  
    http://blog.csdn.net/jubincn/article/details/8232513

     ==================================================

    ===================================================

    1. Read的一些选项

     Read可以带有-a, -d, -e, -n, -p, -r, -t, 和 -s八个选项。

    -a :将内容读入到数值中

    echo -n "Input muliple values into an array:"
    read -a array
    echo "get ${#array[@]} values in array"

    -d :表示delimiter,即定界符,一般情况下是以IFS为参数的间隔,但是通过-d,我们可以定义一直读到出现执行的字符位置。例如read –d madfds value,读到有m的字符的时候就不在继续向后读,例如输入为 hello m,有效值为“hello”,请注意m前面的空格等会被删除。这种方式可以输入多个字符串,例如定义“.”作为结符号等等。

    -e :只用于互相交互的脚本,它将readline用于收集输入行。读到这几句话不太明白什么意思,先跳过。

    -n :用于限定最多可以有多少字符可以作为有效读入。例如echo –n 4 value1 value2,如果我们试图输入12 34,则只有前面有效的12 3,作为输入,实际上在你输入第4个字符‘3’后,就自动结束输入。这里结果是value为12,value2为3。

    -p :用于给出提示符,在前面的例子中我们使用了echo –n “…“来给出提示符,可以使用read –p ‘… my promt?’value的方式只需一个语句来表示。

    -r :在参数输入中,我们可以使用’/’表示没有输入完,换行继续输入,如果我们需要行最后的’/’作为有效的字符,可以通过-r来进行。此外在输入字符中,我们希望/n这类特殊字符生效,也应采用-r选项。

    -s :对于一些特殊的符号,例如箭头号,不将他们在terminal上打印,例如read –s key,我们按光标,在回车之后,如果我们要求显示,即echo,光标向上,如果不使用-s,在输入的时候,输入处显示^[[A,即在terminal上 打印,之后如果要求echo,光标会上移。

    -t :用于表示等待输入的时间,单位为秒,等待时间超过,将继续执行后面的脚本,注意不作为null输入,参数将保留原有的值

    2. Read的相关实例

    a. 拼接文件

    #将afile文件中的前三行与bfile中的前四行拼接在一起
    while read -u3 i && read -u4 j;do
    echo $i $j
    done 3<afile 4<bfile

    b. 输入不在终端显示

    read -p "Input passwd:" -s Passwd
    echo $Passwd

    c. 限时输入,否则退出

    #延迟五秒,没有输入将自动退出
    read -p "Input a number:" -t 5 Number

    d. 读取限定字符

    #从输入中取5个字符
    read -p "Input a word:" -n 5 Word

    e. 等待输出q退出

    #输入,直到输入q,将自动退出
    read -dp -p "Input some words end with q:" word
  • 相关阅读:
    [办公自动化]企业网IE多版本引发的网页无法访问
    [每天想一想]如果你的领导不懂技术,你该怎么办?
    [思考]我们应该怎样建设企业IT
    [读书笔记]流畅的Python(Fluent Python)
    [办公自动化]网件交换机管理软件
    PCRE函数简介和使用示例
    pcre7.0在vc6.0编译
    Luogu P2173 [ZJOI2012]网络
    tensorflow学习笔记2
    python数据可视化7
  • 原文地址:https://www.cnblogs.com/horizonli/p/6043103.html
Copyright © 2011-2022 走看看