zoukankan      html  css  js  c++  java
  • Linux 基础教程 45-read命令

    基本用法

        read命令主要用于从标准输入读取内容或从文件中读取内容,并把信息保存到变量中。其常用用法如下所示:

    read [选项] [文件]
    
    选项 解释
    -a array 将内容读取到数值中,变量默认为数组且以空格做为分割符
    -d delimiter 遇到指定的字符即停止读取
    -n nchars 指定最多可以读入的字符数,即定义输入文本的长度
    -r 屏蔽转义符
    -p prompt 显示提示信息
    -s 静默模式,在输入字符时不在终端中显示,常用于密码输入等
    -t timeout 指定超时时间
    -u FD 从文件描述符中读入,该FD可以由exec开启

    用法示例

    1、从标准输入读入

    [root@localhost test]# cat read.sh
    #!/bin/bash
    echo -n "Please input your name:"
    read name
    echo "Hello $name"
    [root@localhost test]# bash read.sh
    Please input your name:Jack
    Hello Jack
    

    2、指定显示信息从标准输入读入

    [root@localhost test]# cat read.sh
    #!/bin/bash
    # echo -n "Please input your name:"
    read -p "Please input your name:" name
    # read name
    echo "Hello $name"
    [root@localhost test]# bash read.sh
    Please input your name:Jack
    Hello Jack
    

    在以上示例中,read是一次可以接受多个参数的,如下所示:

    read -p "Please input your name:" firstName secondName lastName
    

    但需要注意的事项如下:

    • 如果输入的数据少于变量个数,则多余的变量不会获取到数据,即变量值为空
    • 如果输入的数据多于变量个数,则超出的数据将全部赋给最后一个变量
    • 如果在read命令后面没有定义任何变量,脚本在执行时,如果用户输入数据,此时数据则保存到环境变量$REPLY

    3、指定超时时间

    [root@localhost test]# cat read.sh
    #!/bin/bash
    if read -t 3 -p "Please input your name:" firstName secondName lastName
    then
      echo "variable is $firstName - $secondName - $lastName"
    else
       echo -e  "
    timeout
    "
    fi
    [root@localhost test]# bash read.sh
    Please input your name:
    timeout
    

    4、从指定文件中读取内容

    [root@localhost test]# cat -n test.txt
         1	this is test text.
         2	this is second line.
         3	Hello world
         4	C# Main
         5	Python
    # 使用-u选项
    [root@localhost test]# cat readtest.sh
    #!/bin/bash
    exec 5< ~/test/test.txt
    count=0
    while read -u 5 var
    do
     let count=$count+1
     echo "Line $count is $var"
    done
    echo "Total line count is $count"
    exec 5<&-
    [root@localhost test]# bash readtest.sh
    Line 1 is this is test text.
    Line 2 is this is second line.
    Line 3 is Hello world
    Line 4 is C# Main
    Line 5 is Python
    Total line count is 5
    # 使用管道
    [root@localhost test]# cat readtest.sh
    #!/bin/bash
    count=1
    cat ~/test/test.txt |  while read line
    do
     echo "Current line $count - $line "
     let count=$count+1
    done
    echo "Total line count is $count"
    [root@localhost test]# bash readtest.sh
    Current line 1 - this is test text.
    Current line 2 - this is second line.
    Current line 3 - Hello world
    Current line 4 - C# Main
    Current line 5 - Python
    Total line count is 1
    # 使用重定向
    [root@localhost test]# cat readtest.sh
    #!/bin/bash
    count=0
    while read line
    do
     let count=$count+1
     echo "Current line $count - $line "
    done < ~/test/test.txt
    echo "Total line count is $count"
    [root@localhost test]# bash readtest.sh
    Current line 1 - this is test text.
    Current line 2 - this is second line.
    Current line 3 - Hello world
    Current line 4 - C# Main
    Current line 5 - Python
    Total line count is 5
    

    本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:
    MyQRCode.jpg

  • 相关阅读:
    ZZNU 1995: cots' times
    网站后缀名都有哪些
    webstorm运行到服务器(Apache)
    window系统下node.js环境配置
    window系统安装node.js
    网站创建自定义百度地图
    响应式一级到三级导航
    H5插入视频兼容各大浏览器
    phpStudy环境安装
    jquery on和bind
  • 原文地址:https://www.cnblogs.com/surpassme/p/9576464.html
Copyright © 2011-2022 走看看