Shell脚本5 -- 脚本与用户交互read

声明:
本文的学习内容来源于B站up主“泷羽sec”视频【shell编程(4)脚本与用户交互以及if条件判断】的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。
本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,合理合法使用相关知识。


read 是 Shell 中用于从标准输入(通常是用户输入)中读取数据的命令。它常用于交互式脚本,让用户输入内容,并将输入值存储到变量中以供后续使用。


1 read 的基本语法

read [选项] [变量...]
  • 变量:指定接收输入的变量。如果不指定变量,默认将输入存储到环境变量 REPLY 中。
  • 选项read 提供了多个选项来控制行为。

2 基本用法

读取单个输入:

echo "Enter your name:"
read name
echo "Hello, $name!"
  • 用户输入会存储在变量 name 中。
  • 如果用户输入为 Alice,脚本将输出:Hello, Alice!

3 read 的常用选项

选项含义示例
-p显示提示信息,在读取输入前打印提示文字read -p "Enter your name: " name
-t设置超时时间(秒),超过时间未输入则返回非零值并退出read -t 5 -p "Enter your name: " name
-s静默模式,隐藏输入内容(常用于密码输入)read -s -p "Enter password: " password
-n限制输入字符数,当输入达到指定字符数时自动结束read -n 1 -p "Press any key to continue"
-d指定输入结束符,默认是换行符read -d ':' var
-r禁用反斜杠转义,防止用户输入的反斜杠被解释为转义字符read -r line

4 读取多个变量

如果提供多个变量,read 会根据空白分隔符拆分输入,将每一部分存储到相应的变量中。

示例:

echo "Enter your first name and last name:"
read first_name last_name
echo "Hello, $first_name $last_name!"
  • 用户输入 Alice Johnson
    • first_name 存储 Alice
    • last_name 存储 Johnson

多余的输入处理:

  • 如果用户输入超过变量数目,最后一个变量将包含剩余的所有内容。

5 read 默认行为

如果没有指定变量,read 会将输入存储到默认变量 REPLY 中。

示例:

echo "Enter something:"
read
echo "You entered: $REPLY"

6 进阶用法

要使用bash才可使用-p等参数,kali默认的shell是zsh,所以在命令行输入bash

6.1 静默输入密码

read -s -p "Enter your password: " password
  • 用户输入的内容不会显示在屏幕上。

6.2 限制输入字符数

read -n 1 -p "Press any key to continue"
  • 限制输入一个字符,输入后立即结束。

6.3 设置超时时间

if read -t 5 -p "Enter your name (5 seconds to respond): " name; thenecho "Hello, $name!"
elseecho "Timeout, no input received."
fi
  • 用户有 5 秒时间输入,超时后会提示 Timeout

6.4 自定义结束符

read -d ':' -p "Enter a colon-separated string: " var
echo "You entered: $var"
  • 输入以冒号 : 结束,而不是默认的换行符。

6.5 从文件读取输入

read 可以从文件中逐行读取数据。

示例:

while read line; doecho "Read line: $line"
done < input.txt
  • 文件 input.txt 的每一行会被依次读取并存储到 line 变量中。

7 错误处理与返回值

  • 成功read 成功读取输入时返回值为 0
  • 失败:如超时或到达文件末尾时返回非零值。

示例:

if read -t 3 -p "Enter your name: " name; thenecho "You entered: $name"
elseecho "No input received (timeout)."
fi

8 实际应用案例

8.1 创建交互式菜单

while true; doecho "Choose an option:"echo "1. Show date"echo "2. Show current directory"echo "3. Exit"read -p "Enter your choice: " choicecase $choice in1) date ;;2) pwd ;;3) echo "Goodbye!"; exit ;;*) echo "Invalid choice";;esac
done

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

8.2 自动化用户输入确认

read -n 1 -p "Do you want to continue? (y/n): " answer
echo
if [[ $answer == "y" || $answer == "Y" ]]; thenecho "Continuing..."
elseecho "Exiting..."exit 1
fi

Pasted image 20241118202537

8.3 批量处理数据

# 假设 input.txt 包含多行用户数据
while read username email; doecho "Username: $username, Email: $email"
done < users.txt

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

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

相关文章

【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法

【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法 目录 文章目录 【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法目录摘要&#xff1a;研究背景&#xff1a;问题与挑战&#xff1a;如何解…

vue实现展示并下载后端返回的图片流

// 点击下载 downLoadCode() {const image new Image();image.setAttribute("crossOrigin", "anonymous");image.onload () > {const canvas document.createElement("canvas");canvas.width image.width;canvas.height image.height;c…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-04

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-04 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-04目录1. Alopex: A Computational Framework for Enabling On-Device Function Calls with LLMs摘要&#xff1a;研究背景&…

JavaScript逆向爬虫教程-------基础篇之JavaScript密码学以及CryptoJS各种常用算法的实现

目录 一、密码学介绍 1.1 为什么要学密码学?1.2 密码学里面学哪一些 二、字符编码三、位运算四、Hex 编码与 Base64 编码 4.1 Hex 编码4.2 Base64 编码 五、消息摘要算法 5.1 简介5.2 JS中的MD5、SHA、HMAC、SM3 六、对称加密算法 6.1 介绍6.2 加密模式和填充方式6.3 CryptoJ…

使用 OpenAI 进行数据探索性分析(EDA)

#探索性数据分析&#xff08;Exploratory Data Analysis, 简称 EDA&#xff09;是数据分析中不可或缺的环节&#xff0c;帮助分析师快速了解数据的分布、特征和潜在模式。传统的 EDA 通常需要手动编写代码或使用工具完成。现在&#xff0c;通过 OpenAI 的 GPT-4 模型&#xff0…

2、计算机网络七层封包和解包的过程

计算机网络osi七层模型 1、网络模型总体预览2、数据链路层4、传输层5.应用层 1、网络模型总体预览 图片均来源B站&#xff1a;网络安全收藏家&#xff0c;没有本人作图 2、数据链路层 案例描述&#xff1a;主机A发出一条信息&#xff0c;到路由器A&#xff0c;这里封装目标MAC…

使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程

当涉及到图数据时&#xff0c;复杂性是不可避免的。无论是社交网络中的庞大互联关系、像 Freebase 这样的知识图谱&#xff0c;还是推荐引擎中海量的数据量&#xff0c;处理如此规模的图数据都充满挑战。 尤其是当目标是生成能够准确捕捉这些关系本质的嵌入表示时&#xff0c;…

国标GB28181视频平台EasyCVR视频融合平台H.265/H.264转码业务流程

在当今数字化、网络化的视频监控领域&#xff0c;大中型项目对于视频监控管理平台的需求日益增长&#xff0c;特别是在跨区域、多设备、高并发的复杂环境中。EasyCVR视频监控汇聚管理平台正是为了满足这些需求而设计的&#xff0c;它不仅提供了全面的管理功能&#xff0c;还支持…

使用win32com将ppt(x)文件转换为pdf文件

本文来记录下如何使用win32com将ppt(x)文件转换为pdf文件 文章目录 win32com概述win32com优缺点代码实例本文小结 win32com概述 Pywin32 是一个用于与 Microsoft Windows 操作系统交互的 Python 扩展模块&#xff0c;它提供了对多个 Windows API 的访问&#xff0c;包括对 Mic…

java itext后端生成pdf导出

public CustomApiResult<String> exportPdf(HttpServletRequest request, HttpServletResponse response) throws IOException {// 防止日志记录获取session异常request.getSession();// 设置编码格式response.setContentType("application/pdf;charsetUTF-8")…

HarmonyOs实战项目=>App首页架构沉浸式效果

1.沉浸式效果方案采用> 窗口全屏布局方案不隐藏状态栏和导航条(不隐藏避让区) 2.沉浸式效果截图 3.主要代码截图 4.大功告成&#xff0c;代码见资源

华为HCCDA云技术认证--网络服务

大家好呀&#xff01;我是reload。今天继续带大家学习华为HCCDA云技术认证&#xff0c;涵盖华为云最为核心的计算、存储、网络、数据库、安全、部署等服务。今天学习网络服务相关内容。 登录华为云官网&#xff1a;https://www.huaweicloud.com/ &#xff0c;进入首页&#xff…

如何提升自己的情商?

在当今社会&#xff0c;情商的重要性越来越被人们所认识和重视。无论是职场发展、人际关系&#xff0c;还是自我成长&#xff0c;情商都起着关键的作用。那么&#xff0c;如何提升自己的情商呢&#xff1f; 一、自我认知&#xff1a;了解自己&#xff0c;方能明智处世 自我认…

SSM post接口传递json 报错 HTTP状态 415 - 不支持的媒体类型

这篇文章是写给哪些在小破站学习ssm教程的兄弟们&#xff0c;我们都是萌新&#xff0c;大佬就让行吧感谢理解&#xff01; 本文章主要讲解B站赵伟风SSM教程第108节(JSON数据的接收) 我所有的配置都跟老师一样&#xff0c;老师就很顺利发出去了&#xff0c;我的就是一直415&am…

《Python编程实训快速上手》第七天--文件与文件路径

该章节将使用Python在硬盘上创建、读取和保存文件 一、文件与文件路径 1、Windows中使用\以及macOS和Linux中使用/ 使用pathlib模块中的Path()函数进行文件名和目录的拼接,返回文件路径字符串 from pathlib import Path print(Path("spam","bacon",&qu…

StarRocks 架构

StarRocks 是什么&#xff1f;&#xff08; What is StarRocks?&#xff09; StarRocks 是 MPP 的查询引擎&#xff0c;用来做实时查询&#xff0c;提供亚秒级的查询性能。 兼容 MYSQL 协议&#xff0c;可以和大部分 BI 工具进行无缝衔接。 Apache 2.0 开源产品。 使用场景&…

A038-基于SpringBoot的乡村养老服务管理系统登录

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

WPF应用程序的生命周期-笔记

应用程序的生命周期 窗体的生命周期: window是一个控件 window中的事件:从window创建到关闭我们称之为窗体的生命周期 每一个窗体的生命周期都是独立的,窗体与窗体之间的生命周期都是独立的 最早加载的事件 控件的事件触发 基本所有的控件都继承与Framework 在WPF中基本所有的…

H.265流媒体播放器EasyPlayer.js视频流媒体播放器关于直播流播放完毕是否能监听到

EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;无须安装任何插件&#xff0c;起播快、延迟低、兼容性强&#xff0c;使用非常便捷。 EasyPlayer.js播放器不仅支持H.264与H.265视频编码格式&#xff0c;也能支持WebS…

智能停车解决方案之停车场室内导航系统(二):核心技术与系统架构构建

hello~这里是维小帮&#xff0c;如有项目需求和技术交流欢迎大家私聊我们&#xff01;点击文章最下方获取智慧停车场方案~撒花&#xff01; 随着城市化进程的加速&#xff0c;停车难问题日益凸显。智能停车系统作为缓解停车压力的有效手段&#xff0c;其核心技术与架构的构建至…