`
天梯梦
  • 浏览: 13731161 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

Linux中read命令的用法

 
阅读更多

1. 简单读取

 

read命令接收标准输入(键盘)的输入或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中。下面是 read命令的最简单形式:

bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-simple.sh
 
#!/bin/bash
#这里默认会换行
echo "enter your website: "
#读取从键盘的输入
read website
echo "your website is $website"
exit 0  #退出	 
 
#直接执行shell的结果
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-simple.sh
enter your website:
www.wirelessqa.com
your website is www.wirelessqa.com
 
#如果想看清楚每一步的执行,可以加上-x
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh -x read-simple.sh
+ echo 'enter your website: '
enter your website:
+ read website
www.wirelessqa.com
+ echo 'your website is www.wirelessqa.com'
your website is www.wirelessqa.com
+ exit 0

 

2.直接跟上提示read -p

bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-p.sh

#1.读取单个变量

#!/bin/bash

read -p "enter your website: " website #这里的变量只有一个,也可以有多个
echo "your website is $website"
exit 0
 
#执行结果
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-p.sh
enter your website: www.wirelessqa.com
your website is www.wirelessqa.com
 
#2.读取多个变量
	 
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-p-more.sh
 
#!/bin/bash
#读取输入的多个变量
read -p "enter your name and website: " name website
echo "your name is $name,your websit is $website"
exit 0
#执行结果
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh -x read-p-more.sh
+ read -p 'enter your name and website: ' name website
enter your name and website: bixiaopeng www.wirelessqa.com
+ echo 'your name is bixiaopeng,your websit is www.wirelessqa.com'
your name is bixiaopeng,your websit is www.wirelessqa.com
+ exit 0

 

3.计时输入read -t 

 

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

 

使用read命令存在着潜在危险。脚本很可能会停下来一直等待用户的输入。如果无论是否输入数据脚本都必须继续执行,那么可以使用-t选项指定一个计时器。

bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-t.sh
 
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read-t.sh
#!/bin/bash
	 
if read -t 10 -p "请在10秒内输入毕小朋博客的地址: " website
then
    if [ $website = "www.wirelessqa.com" ]
    then
        echo "你输入的地址是对的:$website"
    else
        echo "你输入的网址是错的:$website"
     fi
    else
        echo "对不起,你已超时,请在10秒内输入!"
fi
exit 0
 
#执行结果1
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-t.sh
请在10秒内输入毕小朋博客的地址: 对不起,你已超时,请在10秒内输入!

#执行结果2
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-t.sh
请在10秒内输入毕小朋博客的地址: weibo.com/wirelessqa
你输入的网址是错的:weibo.com/wirelessqa

#执行结果3
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-t.sh
请在10秒内输入毕小朋博客的地址: www.wirelessqa.com
你输入的地址是对的:www.wirelessqa.com

 

4.计数输入read -n数量

 

当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量

 

 

01 bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-n.sh
02  
03 bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read-n.sh
04 #!/bin/bash
05  
06 #例子1.只接收一个输入就退出
07 read -n1 -p "你喜欢老毕的博客吗[y/n]? " answer
08 case $answer in
09 Y | y)
10    echo " 好,谢谢哈!";;
11 N | n)
12    echo " oh,我会继续努力的!";;
13 *)
14    echo " 输入错误,请输入y/n";;
15 esac
16  
17 #例子2.只接收2个输入就退出
18 read -n2 -p "请随便输入两个字符: " any
19 echo " 您输入的两个字符是:$any"
20 exit 0
21  
22 #执行结果
23 bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-n.sh
24 你喜欢老毕的博客吗[y/n]? n oh,我会继续努力的!
25 请随便输入两个字符: ai 您输入的两个字符是:ai

 

5.隐藏输入read -s

 

01 bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-s.sh
02 bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read-s.sh
03 #!/bin/bash
04 #如果想让用户的输入不显示在屏幕上,请使用read -s
05 read -s -p "请输入你的密码: " pass
06 echo
07 echo "你的密码是: $pass"
08 exit 0
09  
10 #执行结果
11 bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-s.sh
12 请输入你的密码:
13 你的密码是: bixiaopeng

 

6.读取文件

 

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

 

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

 

01 bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-file.sh
02  
03 bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read-file.sh
04 #!/bin/bash
05  
06 count=1
07 cat read-s.sh |while read line #通过cat read-s.sh文件的输出,作为read 的输入给line
08 do
09    echo "$count: $line"
10    count=$[ $count + 1 ]
11 done
12 echo "结束"
13 exit 0
14  
15 #执行结果
16 bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-file.sh
17 1: #!/bin/bash
18 2: #如果想让用户的输入不显示在屏幕上,请使用read -s
19 3: read -s -p "请输入你的密码: " pass
20 4: echo
21 5: echo "你的密码是: $pass"
22 6: exit 0
23 结束

 

 

作者:毕小朋  出处: http://www.wirelessqa.com 欢迎转载或分享,但请务必声明文章出处。如果文章对您有帮助,希望您能推荐或关注。

 

本文链接:Linux中read命令的用法

 

 -a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。

-d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志,会举例说  明。

-p 后面跟提示信息,即在输入前打印提示信息。

-e 在输入的时候可以时候命令补全功能。

-n 后跟一个数字,定义输入文本的长度,很实用。

-r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。

-s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。

-t 后面跟秒数,定义输入字符的等待时间。

-u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。

 

 

分享到:
评论

相关推荐

    Linux下的read命令[文].pdf

    Linux下的read命令是bash脚本编写中不可或缺的一部分,对于写bash脚本的朋友来说,需要实践一下就可以了解read命令的大致用途。read命令的作用是从标准输入中读取一行,并把输入行的每个字段的值指定给shell变量,用...

    Linux服务器rm命令替换

    在Linux操作系统中,`rm`命令是用于删除文件或目录的基本工具。然而,由于`rm`命令一旦执行就无法撤销,对于重要的数据误删可能会带来严重后果。因此,有时我们可能需要替换`rm`命令,以增加额外的安全层或者提供...

    linux中which命令使用详解.docx

    Linux 中 which 命令使用详解 which 命令是 Linux 系统中一个非常有用的命令,用于查找某个可执行文件的位置。它在 PATH 变量指定的路径中搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用 which ...

    linux下所有命令的源码

    在Linux操作系统中,命令是用户与系统交互的基本工具。这些命令的源码是理解系统工作原理、进行系统级编程和优化的重要资源。"Linux下所有命令的源码"这个资源包含了许多核心工具的源代码,比如`coreutils-7.5`,这...

    Linux主要shell命令详解.doc

    在Linux环境中,shell命令的灵活性和强大性体现在其能够实现复杂的功能组合。其中一个关键特性是**命令置换**,即通过特定语法来获取一个命令的输出结果,并将这个结果作为变量值使用。 ##### 命令置换 命令置换...

    linux grep命令详解

    `grep` 是 Linux 下一款强大的文本搜索工具,可以在文件中搜索固定字符串或者使用正则表达式搜索,是日常开发、运维工作中非常实用的一个命令。本文将详细介绍 `grep` 的常用选项及其功能。 #### 1. 基本概念 `grep...

    Linux系统常用命令快速入门

    ### Linux系统常用命令快速入门 #### 一、文件和目录操作的基本命令 ##### 1、pwd命令 **命令介绍**: ...这些命令构成了 Linux 系统中最基础的操作能力,掌握它们可以帮助你更高效地管理文件和进行日常操作。

    linux文件操作 linux操作系统 文件操作 常用命令

    在Linux操作系统中,文件操作是日常任务的核心部分。文件操作主要通过系统调用和应用程序编程接口(API)来实现,这些接口提供了与操作系统内核交互的途径。在Linux中,系统调用是一组特殊的接口,允许用户程序请求...

    常用linux命令.doc

    本文将基于《常用Linux命令.doc》的内容,深入解析Linux中的核心命令及其使用场景,助力读者快速提升Linux操作技能。 #### 用户与权限管理 - **登录与切换**:用户通过`login`和`password`命令登录系统,而`exit`...

    linux下AT命令发送接收工具附源代码

    在Linux操作系统中,AT命令(Attention)是一种标准的串行通信指令集,广泛应用于GSM、UMTS、LTE等移动通信模块中,用于配置和控制这些模块。AT命令集是基于文本的,允许用户通过串行接口与这些模块进行交互,进行...

    linux利用read命令获取变量中的值

    本文主要给大家介绍了关于linux利用read命令获取变量中值的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 read的常用用法如下: read -[pstnd] var1 var2 ... -p提示语句 -n 字符...

    linux dd命令 源代码

    Linux中的`dd`命令是一个非常强大的工具,用于数据复制、转换和备份。它的工作原理是读取输入(源)文件或设备,然后按照指定的块大小写入到输出(目标)位置。这个命令在系统维护、磁盘克隆、创建映像文件等方面...

    LINUX SHELL命令练习题

    LINUX SHELL 命令练习题 本次练习题涵盖了 LINUX SHELL commands 的多个方面,包括文件类型的确定、文件权限的修改、目录管理、文件重命名、系统初始化信息、系统启动级别的切换、后台执行程序、vi 编辑器的使用等...

    实现linux的cp命令

    总结来说,实现Linux的`cp`命令需要理解并使用核心的Unix系统调用,如`open`、`read`和`write`,它们是操作系统与用户空间程序交互的基础。通过这样的实践,可以加深对Unix程序设计的理解,并增强系统级编程能力。...

    Linux read命令的使用

    如果未指定IFS,read命令会使用默认值。 在`read`命令的基本用法中,你可以为每个字段指定一个变量,如`read var1 var2 var3`,这样第一字段会被赋值给`var1`,第二字段赋给`var2`,以此类推。如果字段数超过变量数...

    linux下的特殊命令

    在Linux操作系统中,掌握一些特殊的命令和Shell脚本技巧对于日常的系统管理和自动化任务执行至关重要。以下是关于"linux下的特殊命令"的详细知识点: 1. **Shell脚本调试方法**: - `set -x`:开启命令追踪,打印...

    linux系统命令源码

    在Linux操作系统中,系统命令是用户与内核交互的基础,它们是操作系统提供的一系列预定义程序,用于执行各种任务,如文件操作、进程管理、网络通信等。源码是这些命令背后的魔法,揭示了它们如何工作的细节。"linux...

    java通过代码登录远程linux服务器并执行linux命令源码以及jar包

    在Java编程中,有时我们需要实现一个功能,即通过代码远程登录Linux服务器并执行特定的Linux命令。这在自动化运维、远程脚本执行等场景中非常常见。本篇将详细讲解如何实现这一目标,并提供相关源码及jar包。 首先...

    Linux系统 grep命令用法详解.doc

    在实际使用中,`grep`命令经常与其他Linux命令如`find`、`sed`、`awk`等结合使用,形成强大的数据处理流程。例如,通过`find`命令定位文件,然后使用`grep`筛选特定内容,最后可能还需要使用`sort`、`uniq`等命令...

Global site tag (gtag.js) - Google Analytics