第二章 从键盘或文件中获取标准输入:read命令

第二章 从键盘或文件中获取标准输入:read命令

read命令

从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。该命令可以一次读多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY

语法

read (选项) (参数)

选项:

?   -p    指定读取值时候的提示符

?   -t     指定读取值时候等待的时间(秒)

参数:

?   变量 :指定读取值得变量名

查看变量值:

echo $变量名

printf $变量名

注意:使用echo或printf 输出变量值时,必须在变量名前加$,否则输出变量名。

实例

常用的read命令方式

  1. read name
    从标准输入读取内容  并赋值给变量name
    
    如:
    [[email protected] ~]# read name
    abc
    [[email protected] ~]# echo $abc
    123
    
    也可以写成脚本
    [[email protected] ~]# vi shili.sh
    #!/bin/bash
    read name
    echo "你输入的名字是:"$name
    
    运行:
    [[email protected] ~]# /bin/bash shili.sh
    小王
    你输入的名字是:小王
  2. read first second
    从标准输入读取内容,当遇到第一个空格(这里只能输入空格,输入回车程序就退出了) 将输入的第一个单词赋值给first;将剩下的赋值给second
    
    如:
    [[email protected] ~]# vi shili.sh
    #!/bin/bash
    read name age
    echo "你输入的名字是:"$name "你输入的年龄是:"$age
    
    运行:
    [[email protected] ~]# /bin/bash shili.sh
    小王 22 IT
    你输入的名字是:小王 你输入的年龄是:22 IT
  3. read
    从标准输入读取到的一行内容赋值给特定变量REPLY
    
    如:
    [[email protected] ~]# vi shili2.sh
    #!/bin/bash
    read
    echo $REPLY
    
    [[email protected] ~]# /bin/bash shili2.sh
    小王 22 it
    小王 22 it
  4. read -a arrayname
    把单词清单读入arrayname的数组里
    
    如:
    [[email protected] ~]# read -a info
    小王 22 IT
    [[email protected] ~]# echo "你的名字是${info[0]},你的年龄是${info[1]},你的行业是${info[2]}"
    你的名字是小王,你的年龄是22,你的行业是IT

    ?

  5. read -p "text"
    打印提示text,等待输入,并将输入内容赋值给REPLY中。
    
    如:
    [[email protected] ~]# read -p "输入密码"
    输入密码abc123
    [[email protected] ~]# echo $REPLY
    abc123
    
    补充:输入密码,不让密码显示出来
    方法一:
    [[email protected] ~]# read -p "输入密码" -s pwd
    输入密码
    [[email protected] ~]# echo $pwd
    abc123
    -s :代表不显示终端输入内容
    
    方法二:
    [[email protected] ~]# vi mima.sh
    #!/bin/bash
    stty -echo       # -echo 表示禁止将输出发送到终端
    read -p "输入密码:" pwd
    stty echo    # echo 则允许发送输出
    echo
    echo $pwd
    echo 输入完毕
    
    [[email protected] ~]# /bin/bash mima.sh
    输入密码:
    abc123456
    输入完毕

    ?

  6. read -r line
    允许输入包含反斜杠
    
    [[email protected] ~]# read -r line
    abc\abc
    [[email protected] ~]# echo $line
    abc\abc

    ?

  7. read -t 3
    指定读取等待时间为3秒

    ?

  8. read -n 2 var
    从输入中读取两个字符并存入变量var,不需要按回车读取。
    
    如:
    [[email protected] ~]# read -n 2 var
    你好       # 当输完你好,够了两个字符,程序就自动结束了
    
    [[email protected] ~]# echo $var
    你好

    ?

  9. read -d ":" var
    用 定界符 冒号 结束输入行(也就是说冒号 就等于回车)
    
    如:
    [[email protected] ~]# read -d ":" var
    abc:
    [[email protected] ~]# read -d ":" var2
    123:
    
    [[email protected] ~]# echo $var
    abc
    [[email protected] ~]# echo $var2
    123
    
    当然也可以设置别的结束符
    [[email protected] ~]# read -d "r" var3
    456r
    [[email protected] ~]# echo $var3
    456

    ?

原文地址:http://blog.51cto.com/506554897/2114407

时间: 2024-08-26 20:02:46

第二章 从键盘或文件中获取标准输入:read命令的相关文章

[Shell学习笔记] read命令从键盘或文件中获取标准输入(转载)

转自:http://www.1987.name/151.html read命令是用于从终端或者文件中读取输入的内部命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY.下面的列表给出了read命令的常用方式: read 1987name 从标准输入读取输入并赋值给变量1987name. read first last 从标准输入读取输入到第一个空格或者回车,将输入的第一个单词放到变量first中,并将该行其

Android开发艺术探索——第二章:IPC机制(中)

Android开发艺术探索--第二章:IPC机制(中) 好的,我们继续来了解IPC机制,在上篇我们可能就是把理论的知识写完了,然后现在基本上是可以实战了. 一.Android中的IPC方式 本节我们开始详细的分析各中跨进程的方式,具体方式有很多,比如可以通过在Intent中附加extras来传递消息,或者通过共享文件的方式来共享数据,还可以采用Binder方式来跨进程通信,另外,ContentProvider天生就是支持扩进程访问的,所以通过Socket也可以实现IPC,上述的各种方法都能实现I

JAVA学习之Ecplise IDE 使用技巧(2)第二章:键盘小快手,代码辅助

上一篇:JAVA学习之Ecplise IDE 使用技巧(1)第一章:我的地盘我做主,工作空间 第二章:键盘小快手,代码辅助 内容包括: 第一:显示行号 如何设置行号:Ecplice菜单Windows>Preferences>General>Editors>Text Editors>勾掉Show Line Numbers 第二:打造更强大的代码提示 一般.笨的方法是:输入几个字母后按住Alt+/ 如何设置自动提示: 默认配置是: Ecplice菜单Windows>Pref

第二章 知识图谱——机器大脑中的知识库

第二章 知识图谱——机器大脑中的知识库 作者:刘知远(清华大学):整理:林颖(RPI) 版权所有,转载请注明出处 知识就是力量.——[英]弗兰西斯·培根 1 什么是知识图谱 在互联网时代,搜索引擎是人们在线获取信息和知识的重要工具.当用户输入一个查询词,搜索引擎会返回它认为与这个关键词最相关的网页.从诞生之日起,搜索引擎就是这样的模式,直到2012年5月,搜索引擎巨头谷歌在它的搜索页面中首次引入“知识图谱”:用户除了得到搜索网页链接外,还将看到与查询词有关的更加智能化的答案.如下图所示,当用户输

从资源文件中获取Bitmap

从资源文件中获取Bitmap: [1]先获取Resource,然后可以通过资源ID获取Drawable Drawable d = r.getDrawable(R.drawable.xxx)); [2]通过资源ID获取资源文件的数据流,再获取Bitmap InputStream is = r.openRawResource(R.drawable.xxx); Bitmap bitmap ; ①使用BitmapDrawable: BitmapDrawable bd = new BitmapDrawab

javascript 在js文件中获取路径

如果在*.js文件中获取当自己当前的路径是很重要的. 举个例子,如果一个css文件中引用图片,如background-img: url('./Images/bg.png').那么图片的路径,是相对于css文件而言的. 但是,如果我们再js文件中引用图片,如img.src = './images/bg.png';  但是,图片却不是根据js的相对路径的.而是根据(引用该js)的html的相对路径来决定的.这显然不合理. 所以如果我们能获取js文件的绝对路径的话,就会好很多.譬如 img.src =

第十七章 按列切分文件字段工具:cut命令

第十七章 按列切分文件字段工具:cut命令 名词解释 cut 命令 用来显示行中的指定部分内容,删除文件中指定字段.cut经常用来显示文件的内容,类似于type命令. 说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上:其二是连接两个或多个文件,如cut f1 f2 > f3 将把文件f1和f2的内容合并起来,然后通过输出重定向符">"的作用,将他们放入文件f3中. 语法 cut (选项) (参数) 选项 -

java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容

1 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.FileOutputStream; 9 import java.io.IOException; 10 import java.io.

从BIRT报表文件中获取页面设置信息(页边距、纸张大小、输出方向)的方法

报表打印时,尤其是套打的报表,页面设置信息非常重要,比如页边距,纸张大小,输出方向等,而且每个报表的相关参数有可能不同,因此相关参数从具体报表中获取是一个非常正常而且合理的想法. 如果采用BIRT作为报表的开发工具,报表设计器负责报表的制作,BIRT运行时负责处理报表文件,对于浏览器来说,BIRT后端输出的是网页,并不包含页面设置相关信息,浏览器有自己的打印设置选项,也不会从网页中读取,但是报表设计器在报表设计时提供页面设置信息的设置界面,因此我们需要通过运行时API手工写代码从具体报表中获取页