zoukankan      html  css  js  c++  java
  • read---读取变量值

    read命令从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY

     

    read命令示例

    从标准输入读取输入并赋值给变量1987name。
    #read name        #等待读取输入,直到回车后表示输入完毕,并将输入赋值给变量answer
    HelloWorld            #控制台输入Hello
    
    #echo $name       #打印变量
    HelloWorld

    还可以使用 -n 参数设置 read 命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。

    [root@xiaolizi ~]# read -t 4 -p "输入:" name
    输入:[root@xiaolizi ~]# read -n 2 -p "ss: " hehe
    ss: sd[root@xiaolizi ~]#

    -t 参数指定 read 命令等待输入的秒数,当计时满时,read命令返回一个非零退出状态。

    #!/bin/bash
    
    if read -t 5 -p "输入网站名:" name
    then
        echo "你输入的网站名是 $website"
    else
        echo "
    抱歉,你输入超时了。"
    fi
    exit 0

    执行程序不输入,等待 5 秒后:

    输入网站名:
    抱歉,你输入超时了

    等待一组输入,每个单词之间使用空格隔开,直到回车结束,并分别将单词依次赋值给这三个读入变量。
    #read one two three
    1 2 3                   #在控制台输入1 2 3,它们之间用空格隔开。
    
    #echo "one = $one, two = $two, three = $three"
    one = 1, two = 2, three = 3
    REPLY示例
    #read                  #等待控制台输入,并将结果赋值给特定内置变量REPLY。
    This is REPLY          #在控制台输入该行。
    
    
    #echo $REPLY           #打印输出特定内置变量REPLY,以确认是否被正确赋值。
    
    This is REPLY
    -p选项示例
    #read -p "Enter your name: "            #输出文本提示,同时等待输入,并将结果赋值给REPLY。
    Enter you name: stephen                 #在提示文本之后输入stephen
    
    #echo $REPLY
    stephen
    等待控制台输入,并将输入信息视为数组,赋值给数组变量friends,输入信息用空格隔开数组的每个元素。
    #read -a friends
    Tim Tom Helen
    
    #echo "They are ${friends[0]}, ${friends[1]} and ${friends[2]}."
    They are Tim, Tom and Helen.
    补充一个终端输入密码时候,不让密码显示出来的例子。方法1:
    #!/bin/bash
    read -p "输入密码:" -s pwd
    echo
    echo password read, is "$pwd"

    读取文件

    每次调用 read 命令都会读取文件中的 "一行" 文本。当文件没有可读的行时,read 命令将以非零状态退出。

    通过什么样的方法将文件中的数据传给 read 呢?使用 cat 命令并通过管道将结果直接传送给包含 read 命令的 while 命令。

    测试文件 test.txt 内容如下:

    123
    456
    runoob

    测试代码:

    #!/bin/bash
      
    count=1    # 赋值语句,不加空格
    cat test.txt | while read line      # cat 命令的输出作为read命令的输入,read读到>的值放在line中
    do
       echo "Line $count:$line"
       count=$[ $count + 1 ]          # 注意中括号中的空格。
    done
    echo "finish"
    exit 0

    执行结果为:

    Line 1:123
    Line 2:456
    Line 3:runoob
    finish
  • 相关阅读:
    elasticsearch 中的Multi Match Query
    activiti 流程部署的各种方式
    elasticsearch 嵌套对象之嵌套类型
    elasticsearch Java High Level REST 相关操作封装
    elasticsearch 字段数据类型
    ubuntu 安装 docker
    elasticsearch 通过HTTP RESTful API 操作数据
    facenet 人脸识别(二)——创建人脸库搭建人脸识别系统
    POJ 3093 Margaritas(Kind of wine) on the River Walk (背包方案统计)
    墨卡托投影, GPS 坐标转像素, GPS 坐标转距离
  • 原文地址:https://www.cnblogs.com/jianlilistu/p/10001373.html
Copyright © 2011-2022 走看看