Linux read 命令

Linux read命令用于从标准输入读取数值。

read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。

语法

read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

参数说明:

  • -a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。
  • -d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。
  • -p 后面跟提示信息,即在输入前打印提示信息。
  • -e 在输入的时候可以使用命令补全功能。
  • -n 后跟一个数字,定义输入文本的长度,很实用。
  • -r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。
  • -s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。
  • -t 后面跟秒数,定义输入字符的等待时间。
  • -u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。

实例
1、简单读取

#!/bin/bash#这里默认会换行  
echo "输入网站名: "  
#读取从键盘的输入  
read website  
echo "你输入的网站名是 $website"  
exit 0  #退出

测试结果为:

输入网站名: 
www.runoob.com
你输入的网站名是 www.runoob.com

2、-p 参数,允许在 read 命令行中直接指定一个提示。

#!/bin/bash

read -p "输入网站名:" website
echo "你输入的网站名是 $website" 
exit 0

测试结果为:

输入网站名:www.runoob.com
你输入的网站名是 www.runoob.com

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

#!/bin/bashif read -t 5 -p "输入网站名:" website
thenecho "你输入的网站名是 $website"
elseecho "\n抱歉,你输入超时了。"
fi
exit 0

执行程序不输入,等待 5 秒后:

输入网站名:
抱歉,你输入超时了

4、除了输入时间计时,还可以使用 -n 参数设置 read 命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。

#!/bin/bashread -n1 -p "Do you want to continue [Y/N]?" answer
case $answer in
Y | y)echo "fine ,continue";;
N | n)echo "ok,good bye";;
*)echo "error choice";;esac
exit 0

该例子使用了-n 选项,后接数值 1,指示 read 命令只要接受到一个字符就退出。只要按下一个字符进行回答,read 命令立即接受输入并将其传给变量,无需按回车键。

只接收 2 个输入就退出:

#!/bin/bashread -n2 -p "请随便输入两个字符: " any
echo "\n您输入的两个字符是:$any"
exit 0

执行程序输入两个字符:

请随便输入两个字符: 12
您输入的两个字符是:12

5、-s 选项能够使 read 命令中输入的数据不显示在命令终端上(实际上,数据是显示的,只是 read 命令将文本颜色设置成与背景相同的颜色)。输入密码常用这个选项。

#!/bin/bashread  -s  -p "请输入您的密码:" pass
echo "\n您输入的密码是 $pass"
exit 0

执行程序输入密码后是不显示的:

请输入您的密码:
您输入的密码是 runoob

6.读取文件

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

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

测试文件 test.txt 内容如下:

123
456
runoob

测试代码:

#!/bin/bashcount=1    # 赋值语句,不加空格
cat test.txt | while read line      # cat 命令的输出作为read命令的输入,read读到>的值放在line中
doecho "Line $count:$line"count=$[ $count + 1 ]          # 注意中括号中的空格。
done
echo "finish"
exit 0

执行结果为:

Line 1:123
Line 2:456
Line 3:runoob
finish

使用 -e 参数,以下实例输入字符 a 后按下 Tab 键就会输出相关的文件名(该目录存在的):

$ read -e -p "输入文件名:" str 
输入文件名:a
a.out    a.py     a.pyc    abc.txt  
输入文件名:a

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

放图片 java_java怎么在我想要的图片上在放一个我想要的图片

展开全部import javax.imageio.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import java.io.*;import java.util.*;/*** author Hardneedl*/final class PicDemo extends JFrame {public String getTitle() {return "PicDe…

Ext-ajax请求数据

Ext.Ajax.request({url: webPath/news/newsEastmoneyList,method: POST,success: function (response, options) {var data Ext.decode(response.responseText);if(data.success){list.getStore().load({page:1});Ext.Msg.alert(提示,提取成功,共提取data.zg条.);}…

java .net des_DES加密解密 JAVA与.NET互通程序代码

JAVA版本import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import javax.crypto.spec.IvParameterSpec;public class Des {private byte[] desKey;//解密数据public static String decryp…

linux 查找文件或者服务

[rootlocalhost ~]# whereis mysql mysql: /usr/bin/mysql /usr/lib/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz [rootlocalhost ~]# which mysql /usr/bin/mysql转载于:https://www.cnblogs.com/adolfmc/p/4749224.html

android java 调用js_android WebApp 集成方式怎么使用java调用js

WebAPP集成,本地打包,有两种方式java js通信1.DCloud插件模式,参考SDK DEMO的H5Plugin,Java:继承StandardFeature写接口。public class DBControlPlugin extends StandardFeature{public void PluginTestFunction(IWebview pWebvi…

Android SurfaceView实现静态于动态画图效果

本文是基于Android的SurfaceView的动态画图效果,实现静态和动态下的正弦波画图,可作为自己做图的简单参考,废话不多说,先上图, 静态效果: 动态效果: 比较简单,代码注释的也比较详细&…

java ip调天气预报接口_JAVA + WeatherWebService 实现天气预报接口调取

两步完成接口调取第一步:引入jar包若在线jar包失效,私信我即可。第二步:创建类实现在JAVA项目中创建java类(我的是:WeatherUtil)修改类中cityid为你需要展示的地区id,我的是上海的【cityid查询】WeatherUtil类代码:imp…

数学概念——J - 数论,质因数分解

J - 数论,质因数分解Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit StatusDescription Tomorrow is contest day, Are you all ready? We have been training for 45 days, and all guys must be tired.But , you are…

java map集合排序的_Java对Map集合进行排序

Java对Map集合进行排序实现 Comparator 接口,重写compare方法,完成自定义排序int compare(Object o1, Object o2) 返回一个基本类型的整型如果要按照升序排序,则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)…

java黄金分割点游戏_结对编程1——黄金点小游戏项目简介及需求分析

一、项目成员2018141461085龚泽楠2018141461012蔡铧荣二、项目名称黄金点小游戏三、项目简介游戏规则: N个同学( N通常大于 10 ),每人写一个 0~100 之间的有理数 (不包括 0或100) ,交给裁判算出所有数字的平均值然后乘以 0.618 (所谓黄金分割…

STL泛型算法总结

泛型算法只是依赖于迭代器的操作,而不是依赖于容器 泛型算法可以分为3大类: 下面的vec和vec2代表相同类型的容器 1.只读算法:只允许读取其输入范围内的元素,而不改变元素 find(vec.cbegin(),vec.cend(),k) 查找算法:前…

java x锁_基于Java名称的锁?

MySQL具有方便的功能:SELECT GET_LOCK("SomeName")这可用于为应用程序创建简单但非常具体的基于名称的锁。但是,它需要数据库连接。我有很多情况,例如:someMethod() {// do stuff to user A for their data for feature…

HDU 2242 考研路茫茫——空调教室

考研路茫茫——空调教室 Time Limit: 2000msMemory Limit: 32768KBThis problem will be judged on HDU. Original ID: 224264-bit integer IO format: %I64d Java class name: Main众所周知,HDU的考研教室是没有空调的,于是就苦了不少不去图书馆的…

如何查看现有项目的struts和hibernate和spring版本

1. struts的版本信息 查看 struts.jar\META-INF\MANIFEST.MF再查看 Implementation-Version看后面的数字.. Manifest-Version: 1.0Specification-Title: Struts FrameworkClass-Path: commons-beanutils.jar commons-collections.jar commons-dig ester.jar commons-fileuploa…

java 正则表达式 组合_java基础:5.1 面向对象、类的关联 聚合 组合、正则表达式...

上一个礼拜太忙了,今天开始恢复java的学习~目录1、面向过程——面向对象的区别传统的面向过程式编程是动作驱动的,数据和动作是分离的。面向对象编程的范式重点在于对象,动作和数据一起定义在对象中。面向过程的范式重点在于设计方法。面向对…

html5学习之路_003

html布局 使用<div>元素布局使用<table>元素布局<div>元素布局 <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title>div布局</title><link rel"stylesheet" type&qu…

计算机二级 java和web_2020年全国计算机二级WEB程序复习知识点:JavaBean

【摘要】即将参加全国计算机等级考试的考生们&#xff0c;考试即将到来&#xff0c;大家的备考工作进行得如何了&#xff1f;考必过为大家精心整理了2020年全国计算机二级WEB程序复习知识点&#xff1a;JavaBean&#xff0c;希望能够助力全国计算机等级考试&#xff0c;相信坚持…

java表达式语句_Java基础知识笔记第三章:运算符表达式语句

算术运算符与表达式操作符描述例子加法 - 相加运算符两侧的值A B 等于 30-减法 - 左操作数减去右操作数A – B 等于 -10*乘法 - 相乘操作符两侧的值A * B等于200/除法 - 左操作数除以右操作数B / A等于2&#xff05;取余 - 左操作数除以右操作数的余数B%A等于0自增: 操作数的值…

JavaScript_Util_01

//记住细节往往能让自己更有效率。定义变量&#xff0c;打冒号//XML文档空格bug补救方案function cleanWhiteSpace(element){elementelement||document;var cur element.firstChild;while(cur ! null){ //如果是文本节点&#xff0c;并且只包含空格if(cur.nodeType 3 &&a…

java简单创建图片面板_图像界面编程简单窗体创建

/** 图像界面编程* JFrame 窗体* JPanel 面板* JLabel 标签* JButton 按钮* JLabel 标签* ImageIcon 图标*** */package fish;import java.util.*;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax…