为了账号安全,请及时绑定邮箱和手机立即绑定

Linux 基础教程 45-read命令

标签:
Linux

基本用法

    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/bashecho -n "Please input your name:"read nameecho "Hello $name"[root@localhost test]# bash read.shPlease 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 nameecho "Hello $name"[root@localhost test]# bash read.shPlease 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/bashif read -t 3 -p "Please input your name:" firstName secondName lastNamethen
  echo "variable is $firstName - $secondName - $lastName"else
   echo -e  "\ntimeout\n"fi[root@localhost test]# bash read.shPlease 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/bashexec 5< ~/test/test.txt
count=0while read -u 5 vardo
 let count=$count+1 echo "Line $count is $var"doneecho "Total line count is $count"exec 5<&-
[root@localhost test]# bash readtest.shLine 1 is this is test text.
Line 2 is this is second line.
Line 3 is Hello world
Line 4 is C# MainLine 5 is Python
Total line count is 5# 使用管道[root@localhost test]# cat readtest.sh#!/bin/bashcount=1
cat ~/test/test.txt |  while read linedo
 echo "Current line $count - $line "
 let count=$count+1doneecho "Total line count is $count"[root@localhost test]# bash readtest.shCurrent line 1 - this is test text.
Current line 2 - this is second line.
Current line 3 - Hello world
Current line 4 - C# MainCurrent line 5 - Python
Total line count is 1# 使用重定向[root@localhost test]# cat readtest.sh#!/bin/bashcount=0while read linedo
 let count=$count+1 echo "Current line $count - $line "done < ~/test/test.txtecho "Total line count is $count"[root@localhost test]# bash readtest.shCurrent line 1 - this is test text.
Current line 2 - this is second line.
Current line 3 - Hello world
Current line 4 - C# MainCurrent line 5 - Python
Total line count is 5

原文出处:https://www.cnblogs.com/surpassme/p/9576464.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消