Linux read命令教程:交互式读取用户输入(附案例详解和注意事项)

Linux read命令介绍

read命令是处理从键盘或其它输入设备读入字符的一个简单命令。常见用法就是在shell脚本中用来读取用户的输入。除此之外,也可以从文件中读取内容或处理由其它命令输出的内容。

Linux read命令适用的Linux版本

read命令在所有主流的Linux发行版中,如Ubuntu、Debian、Fedora、Red Hat、CentOS等,都已默认安装。

Linux read命令的基本语法

语法格式:

read [ -options ] [ 赋值变量名 ]

Linux read命令的常用选项或参数说明

选项说明
-p提示信息
-t等待时间
-n输入字符数
-s静默模式

Linux read命令实例详解

实例1 - 读取变量

不添加任何参数的情况下,read的默认行为是读取一个变量。我们将演示如何将用户输入分配给一个变量。

[linux@bashcommandnotfound.cn ~]$ read var1
# 请求输入
[linux@bashcommandnotfound.cn ~]$ echo $var1
# 输出输入的内容

实例2 - 一次读取多个变量

read命令不仅可以读取单个变量,还可以读取并分配多个变量。当你一次性输入多个值时,这个功能就显得十分有用。

[linux@bashcommandnotfound.cn ~]$ read var1 var2 var3
# 请求输入
[linux@bashcommandnotfound.cn ~]$ echo $var1 $var2 $var3
# 输出输入的内容

实例3 - 使用-p选项提供提示

在某些时候,你可能想在请求用户输入数据之前提供一些提示或指示。 可以使用-p选项来实现这个需求。

[linux@bashcommandnotfound.cn ~]$ read -p "Enter your name: " name
# 输出提示并请求输入
[linux@bashcommandnotfound.cn ~]$ echo Hello, $name!
# 输出提示

实例4 - 读取并显示文件内容

我们可以使用read命令读取并显示文件内容,将文件的每一行作为输入。

[linux@bashcommandnotfound.cn ~]$ while IFS= read -r line; do echo "$line"; done < file.txt
# 输出文件内容

这个例子使用while循环和read命令一行一行地读取file.txt文件的内容。然后使用echo命令输出每一行。

实例5 - 使用-t选项设置超时

在一些脚本中,你可能希望在指定的时间内等待用户的输入,超过这个时间就停止等待。read命令提供了一个-t选项可以实现这个需求。

[linux@bashcommandnotfound.cn ~]$ if read -t 10 -sp "Enter secret passcode within 10 seconds: " secret; thenecho -e "\nGot it!"elseecho -e "\nYou took too long!"fi
# 输出提示,并设置10秒的输入超时时间

这个实例中,我们设置了10秒的超时时间。用户如果在10秒内输入,则显示"Got it!“,否则显示"You took too long!”。

实例6 - 使用-a选项读取到数组中

有时候我们希望一次读取多个值并将它们放入数组中,可以使用-a选项来实现这个需求。

[linux@bashcommandnotfound.cn ~]$ read -a array
# 请求输入
[linux@bashcommandnotfound.cn ~]$ echo ${array[0]} ${array[1]} ${array[2]}
# 输出输入的内容

这个例子中,read命令将所有输入的单词存储在一个数组中,然后我们可以通过索引号分别来访问它们。

Linux read命令的注意事项

  • 如果在 read 命令执行时没有任何输入,那么 read 命令将等待并占用Shell,除非向Shell传递退出信号(ctr+c)
  • 常见错误信息 bash: read: command not found, 此时需要进行上面的安装步骤,此处不再赘述。

Linux read相关命令

  • echo命令:用来在终端输出文本或变量
  • cat命令:用于合并、复制、创建、查看文件
  • printf命令:格式化并输出结果
  • set命令:设置并显示环境变量

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

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

相关文章

springboot(ssm甘肃旅游管理系统 在线旅游景点管理系统 Java系统

springboot(ssm甘肃旅游管理系统 在线旅游景点管理系统 Java系统 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#x…

YOLOv5改进 | 注意力篇 | CGAttention实现级联群体注意力机制 (全网首发改进)

一、本文介绍 本文给大家带来的改进机制是实现级联群体注意力机制CascadedGroupAttention,其主要思想为增强输入到注意力头的特征的多样性。与以前的自注意力不同,它为每个头提供不同的输入分割,并跨头级联输出特征。这种方法不仅减少了多头注意力中的计算冗余,而且通过增…

四、Qt 的第一个demo

在上一篇章节里《三、Qt Creator 使用》&#xff0c;我们介绍了如何使用Qt Creator创建一个简单的带窗体的demo&#xff0c;在这一章节里&#xff0c;我们详细讲解一下这个demo的文件组成&#xff0c;及主函数&#xff0c;并在UI上加一些控件&#xff0c;实现一些简单的功能。 …

Qt打包程序

添加链接描述

11Spring IoC注解式开发(下)(负责注入的注解/全注解开发)

1负责注入的注解 负责注入的注解&#xff0c;常见的包括四个&#xff1a; ValueAutowiredQualifierResource 1.1 Value 当属性的类型是简单类型时&#xff0c;可以使用Value注解进行注入。Value注解可以出现在属性上、setter方法上、以及构造方法的形参上, 方便起见,一般直…

leetcode-删除排序链表中的重复元素

83. 删除排序链表中的重复元素 题解&#xff1a; 要删除一个已排序链表中的所有重复元素&#xff0c;从而使每个元素只出现一次&#xff0c;我们可以使用一个指针来遍历这个链表&#xff0c;同时比较当前节点和它下一个节点的值。如果它们相等&#xff0c;我们就删除下一个节…

git修改历史(非最新)提交信息

二、修改最近第二次或更早之前的commit信息 当前有三次提交&#xff0c;从近到远分别为1、2、3 以修改第2次提交为例&#xff08;从最新往前数&#xff09; 1、使用命令git rebase -i HEAD~2 按i进入编辑模式&#xff0c;将对应的pick改为edit&#xff0c;然后ctrlc退出。最…

高并发场景下底层账务优化方案

在秒杀等场景中&#xff0c;经常会需要对库存、商家冻结资金做一些修改&#xff0c;而并发一旦上来后会导致这个修改动作频繁超时及失败&#xff0c;那么如何处理呢&#xff1f; 下面将以问答形式分享解决方案&#xff1a; 底层账务优化相关&#xff0c;根据实际业务进…

Linux mren命令教程:批量重命名文件(附实际操作案例和注意事项)

Linux mren命令介绍 mren&#xff08;全称multiple rename&#xff09;&#xff0c;它是用来对多个文件进行重命名的工具。这个命令在一次操作中可以批量改变多个文件的名称&#xff0c;特别是在需要对大量文件进行重命名时&#xff0c;mren将节省大量的时间和努力。 Linux m…

linux安装系统遇到的问题

这两天打算攻克下来网络编程&#xff0c;发现这也确实是很重要的一个东西&#xff0c;但我就奇了怪了&#xff0c;老师就压根没提&#xff0c;反正留在我印象的就一个tcp/ip七层网络。也说正好&#xff0c;把linux命令也熟悉熟悉&#xff0c;拿着我大一课本快速过过 连接cento…

survey和surveyCV:如何用R语言进行复杂抽样设计、权重计算和10折交叉验证?

一、引言 在实际调查和研究中&#xff0c;我们往往面临着样本选择的复杂性。复杂抽样设计能够更好地反映真实情况&#xff0c;提高数据的代表性和可靠性。例如&#xff0c;多阶段抽样可以有效地解决大规模调查的问题&#xff0c;整群抽样能够在保证样本的随机性的同时减少资源消…

腾讯云添加SSL证书

一、进入腾讯云SSL证书&#xff1a; ssl证书控制台地址 选择“我的证书”&#xff0c;点击"申请免费证书" 2、填写域名和邮箱&#xff0c;点击“提交申请” 在此页面中会出现主机记录和记录值。 2、进入云解析 DNS&#xff1a;云解析DNS地址 进入我的解析-记录…

QT DAY5作业

1.QT基于TCP服务器端 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器类 #include <QMessageBox> //消息对话框类 #include <QTcpSocket> //客户端类 #include <QList> //链表容器类namespace …

show processlist 显示的MySQL语句不全的解决方法

介绍 使用show processlist命令时显示MySQL语句不全&#xff0c;可以通过show full processlist命令解决。 示例 show full processlist

VC++中通过ADO中的_RecordsetPtr操作数据库:增删改查

VC中通过ADO中的_RecordsetPtr操作数据库&#xff1a;增删改查 _RecordsetPtr智能指针&#xff0c;它是专门为通过记录集操作数据库而设立的指针&#xff0c;通过该接口可以对数据库的表内的记录、字段等进行各种操作。 要搞清楚:数据库和ADO的记录集是两个不同的概念,是存在…

Center审计策略表安装和策略添加(事务)——(Linux/Windows版本)

本博客主要讲述Center的审计策略表安装和策略添加 使用事务添加 1、开启事务 my->StartTransaction(); 2、编写sql语句 //清除原来数据&#xff0c;防止数据污染my->Query("DROP TABLE IF EXISTS t_strategy");string sql "CREATE TABLE t_strategy (…

世微AP630X地摊灯 手电筒方案 可充电多功能LED灯

1,信息来源&#xff1a;深圳市世微半导体有限公司 Augus 2,产品的特性有&#xff1a; 全集成单芯片控制 5 照明循环模式可选 0.5A/1A 固定充电电流可选 内置 MOS 1.8A 驱动电流 可外置 MOS 驱动更大电流 充电指示/低电提示/短路提示 3A 手电筒过流保护? 预设 4.22V 电…

云原生分布式多模架构:华为云多模数据库 GeminiDB 架构与应用实践

文章目录 前言一、GeminiDB 总体介绍1.1、华为云数据库全景图1.2、GeminiDB 发展历程1.3、GeminiDB 全球分布情况 二、GeminiDB 云原生架构2.1、核心设计&#xff1a;存算分离&多模扩展2.2、存算分离&多模扩展核心优势2.3、高可用&#xff1a;秒级故障接管2.4、弹性扩展…

Sonar Qube基本使用

中文化 Sonar Qube的使用方式很多&#xff0c;Maven可以整合&#xff0c;也可以采用sonar-scanner的方式&#xff0c;再查看Sonar Qube的检测效果 Sonar-scanner实现代码检测 下载Sonar-scanner&#xff1a;https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/…

索引的概述和使用

1、概述 索引占用存储空间&#xff0c;并不是越多越好&#xff0c;太多的索引会影响系统性能 索引分类 聚集索引&#xff1a; 逻辑顺序和物理顺序是一致的&#xff08;表中行数的位置决定了该行在内存中存储的位置&#xff09;&#xff0c;因此效率优先于非聚集索引&#xff…