前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >read命令

read命令

原创
作者头像
WindRunnerMax
修改2020-10-27 10:26:40
1.1K0
修改2020-10-27 10:26:40
举报
文章被收录于专栏:Czy‘s Blog

read命令

read命令被用来从标准输入读取单行数据,这个命令可以用来读取键盘输入,当使用重定向以及默认选项的情况下,可以读取文件中的一行数据,此时read会将换行符视为行尾,但是可以使用-d选项更改。

语法

代码语言:txt
复制
read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...] [name2 ...]

参数

  • -a array: 将单词存储在一个名为array的索引数组中,数组元素的编号从0开始。
  • -d delim: 将定界符设置为delim,该字符表示行尾,如果未使用-d,则默认行定界符为换行符。
  • -e: 从shell获取一行输入,用户手动输入字符,直到达到行分隔符为止。
  • -i text: 当与-e结合使用并且仅在不使用-s的情况下,文本将作为输入行的初始文本插入,允许用户在输入行上编辑文本。
  • -n nchars: 如果尚未达到行定界符,则在读取整数nchars个字符后停止读取。
  • -N nchars: 忽略行定界符,仅在已读取nchars个字符,达到EOF或读取超时之后才停止读取。
  • -p prompt: 在开始读取之前,不使用换行符打印字符串提示符。
  • -r: 使用原始输入,具体来说,这个选项使read按字面意思解释反斜杠,而不是将它们解释为转义字符。
  • -s: 当read从终端获取输入时,不显示按键。
  • -t timeout: 如果在超时秒内未读取完整的输入行,则超时并返回失败,如果超时值为零,那么read将不会读取任何数据,但是如果输入可用于读取,则返回成功。如果未指定超时,则使用shell变量TMOUT的值(如果存在),超时值可以是小数,例如3.5
  • -u fd: 从文件描述符fd中读取而不是从标准输入中读取,文件描述符应该是一个small integer

示例

读取终端的输入,循环读入一直持续到按Ctrl + DEOF为止,由于指定变量名text,因此整行文本都存储在变量text中,每当输入一行后按回车时,将会把输入的内容输出。

代码语言:txt
复制
while read text
    do echo "$text"
done

读取终端的输入,指定一个输入的超时时间。

代码语言:txt
复制
if read -t 3 -p "Text: " text
then
    echo "Text: $text"
else
    echo -e "\nTimeout"
fi

按行读取文件中的内容。

代码语言:txt
复制
cat test.txt | while read line
do
   echo "$line"
done

每日一题

代码语言:txt
复制
https://github.com/WindrunnerMax/EveryDay

参考

代码语言:txt
复制
https://www.computerhope.com/unix/bash/read.htm
https://www.runoob.com/linux/linux-comm-read.html
https://linuxize.com/post/how-to-read-a-file-line-by-line-in-bash/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • read命令
    • 语法
      • 参数
        • 示例
          • 每日一题
            • 参考
            相关产品与服务
            对象存储
            对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档