linux初级教程,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/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

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 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值