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;如何解…

【网络安全 | 漏洞挖掘】未授权获取AI聊天内容

未经许可,不得转载。 文章目录 两天前,我收到了一项私人项目的邀请,内容看起来像是一个聊天机器人,类似于 Gemini 或 ChatGPT。于是我开始测试该项目的一些业务逻辑漏洞和 IDOR(不当访问控制)漏洞。尽管这个产品拥有一个强大的安全团队,网站上也部署了 WAF(Web 应用防火…

7天掌握SQL - 第一天:数据库基础与SQL入门

目标 在本章节中&#xff0c;我们将学习数据库的基本概念和SQL语言的基础操作&#xff0c;为后续的深入学习打下坚实的基础。 一级目录 数据库基本概念SQL语言基础SQL操作实践推荐资源总结 1. 数据库基本概念 1.1 表&#xff08;Table&#xff09; 表是数据库中存储数据的…

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;研究背景&…

Python 人脸检测:使用 Dlib 和 OpenCV

简介 本文用Python、Dlib 和 OpenCV 库来检测图像中的人脸&#xff0c;并在人脸上绘制矩形框进行窗口显示。 环境准备 在开始之前&#xff0c;请确保您的计算机上已安装 Python。此外&#xff0c;您还需要安装以下库&#xff1a; dlib&#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…

go语言中的切片含义和用法详解

Go 语言中的切片&#xff08;slice&#xff09;是引用类型&#xff0c;它提供了一种灵活的方式去操作一系列具有相同类型的数据。与数组不同&#xff0c;切片的长度不是固定的&#xff0c;可以动态地增长或缩小。切片在 Go 语言中非常常用&#xff0c;因为它们提供了高效且方便…

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

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

【软考】系统架构设计师-数据库设计基础

数据库核心考点 三级模式-两级映射 外模式--视图 概念模式--表&#xff08;模式、基本表&#xff09; 内模式--物理文件 数据库设计 概念结构设计&#xff1a;属性冲突、命名冲突、结构冲突 逻辑结构设计&#xff1a;关系模式&#xff08;层次模型、网络模型&#xff09…

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

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

图像重建之深度学习重建

图像重建是计算机视觉领域的一个重要任务。深度学习在图像重建中具有很强的能力和广泛的应用。下面介绍一种常见的深度学习图像重建方法&#xff1a;基于生成对抗网络&#xff08;Generative Adversarial Networks&#xff0c;GANs&#xff09;的图像重建。 基于 GAN 的图像重…

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

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

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

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

2411rust,正与整128

原文 长期以来,Rust在x86-32和x86-64架构上128位整数的对齐与C语言不一致.最近已解决此问题,但该修复带来了一些值得注意的效果. 作为用户,除非如下,否则不用担心: 1,假设i128/u128对齐,而不是用align_of 2,忽略improper_ctypes*检查,并在FFI中使用这些类. 除x86-32和x86-64…

C语言实现程序执行时间打印

一.概述 程序执行时间打印是优化程序的的重要手段&#xff0c;本文为用c接口实现打印时间的三种方法。本文程序均在qt5.12环境测试验证。 二.测试代码 1.方法一 使用 time() 测量秒数 #include <stdio.h> #include <time.h> int main() { // 获取操作前的当前时…

使用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;代码见资源

深入解析 Vue 3 中的 defineExpose

深入解析 Vue 3 中的 defineExpose 在 Vue 3 的组合式 API&#xff08;Composition API&#xff09;中&#xff0c;defineExpose 是一个重要的辅助函数&#xff0c;专门用于在 <script setup> 模式下暴露组件内部的属性和方法给父组件使用。本文将详细解析 defineExpose…