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

Win10网络图标消失,网络图标变成灰色,打开网络设置闪退等问题解决 介绍 主要解决如下问题 网络图标消失 常用方法配置中出现的网络图标变成灰色没有办法打开 打开网络和Internet闪退 错误提示`网络发现已关闭。网络计算机和设备不可见。请启动网络和共享中心的网络发现。 连不上网,诊断结果为 依赖服务或组无法启动 这个问题大概率通过重装系统不能解决,请大家谨慎测试之后最后选择重装这个路线。 方法1:这一步一定要做(卸载三方软件) 把360安全卫士,软件管家这些东西都卸载掉。 我的问题一开始就是这个软件引起的,可能他检测到我还给台式机配了无线网卡,然后就把有线网络的一些 阅读详情

声明:
本文的学习内容来源于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; then
	echo "Hello, $name!"
else
	echo "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; do
  echo "Read line: $line"
done < input.txt
  • 文件 input.txt 的每一行会被依次读取并存储到 line 变量中。

7 错误处理与返回值

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

示例:

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

8 实际应用案例

8.1 创建交互式菜单

while true; do
	echo "Choose an option:"
	echo "1. Show date"
	echo "2. Show current directory"
	echo "3. Exit"
	read -p "Enter your choice: " choice
	
	case $choice in
		1) 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" ]]; then
  echo "Continuing..."
else
  echo "Exiting..."
  exit 1
fi

Pasted image 20241118202537

8.3 批量处理数据

# 假设 input.txt 包含多行用户数据
while read username email; do
  echo "Username: $username, Email: $email"
done < users.txt
GeoServer下载与安装(详细图文教程) GeoServer官方版可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。 阅读详情

相关推荐

调用IP核、移植/复制IP核以及解决IP核被锁住/红锁问题(基于vivado)

解决不同工程IP核之间复制调用以及IP核红锁问题,让开发更简单!

weixin_44502554的博客 1万+

【Shell 命令集合 文件管理】Linux 读取命令 read命令使用指南

在Linux中,`read`命令用于从标准输入或者文件中读取输入,并将其赋值给一个变量。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 6545

2026 具身智能 VLA/WAM 全栈学习与训练路线:从动作建模、SFT、RL 到世界模型的 RTX PRO 6000 96GB 单卡实战指南

我会把这张表做成“”而不是只列论文名:先核对每个模型截至的公开代码、训练目标和数据接口,再单独给你一套。对于没有公开、只有推理代码或训练细节不完整的模型,我会明确标出来,避免把“论文里提到”误写成“可复现”。目前有一个重要更新:。截至今天 NVIDIA 官方开源主线已经是换成 Cosmos-Reason2-2B/Qwen3-VL 架构,动作端仍是连续路线,而且官方明确给出单卡微调时默认只训练,峰值显存约。所以你的 96GB 单卡对 GR00T SFT 非常宽裕。可以。下面我按,把它整理成一张真正面向“

u013250861的博客 440

shell read详解

-u3,指定把名为3的描述符作为输入源#3<'1.txt'是定义一个文件描述符名称为3,并把文件输入到这个描述符里面i=a,j=1i=b,j=2i=c,j=3#自定义输入源,可以同时进行多个文件读取,也可以在读取文件的时候,读取标准输入的内容#写法一:read -u定义新的输入源doecho "文件读取行:"$lineadfa文件读取行:aadfads文件读取行:bafda文件读取行:cadfaadfadsafda#这里又能输出文件内容,同时也能读取标准输入的内容。

3853

别再纠结高侧低侧了!用INA199/INA219这类集成电流检测芯片,5分钟搞定精准电流测量

本文详细解析了使用INA199/INA219等集成电流检测芯片实现精准电流测量的高效方案。通过对比传统分立元件方案,突出集成芯片在精度、温度稳定性和设计简化方面的优势,并提供硬件设计避坑指南和软件实现最佳实践,帮助开发者快速掌握电流检测技术。

weixin_42685438的博客 469

C++,使用Qt设计一个登录窗口

使用Qt设计一个登录界面

heyu0311的博客 2990

【linux命令讲解大全】053. Shell脚本中的read命令及其用法

本文介绍了Shell脚本中的read命令,它可以从键盘读取变量的值,并在与用户交互时发挥重要作用。通过不同的选项和参数,我们可以实现对输入的控制和处理。本文提供了read命令的语法、常见用法示例以及详细解释,包括如何读取变量值、多个变量值、一行输入、数组和密码等。最后,还给出了一些相关示例和注意事项。

全栈若城,专注知识分享 3864

Halcon手眼标定实战:九点标定法从入门到精通(附完整代码)

本文详细介绍了Halcon环境下九点标定法的完整实现流程,从基础概念到实战技巧,帮助开发者快速掌握手眼标定技术。通过精确采集图像坐标与机械坐标,计算仿射变换矩阵,实现相机与机械臂坐标系的精确映射,适用于工业自动化中的平面定位场景。

v4w5x6的博客 410

shell的read方法使用介绍

关键字:获取用户输入echo -n(不换行) read命令-p(提示语句) -n(字符个数) -t(等待时间) -s(不回显) 和“读文件”深入学习 1、基本读取 read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说)。得到输入后,read命令将数据放入一个标准变量中。下面是read命令 的最简单形式:: #!/bin/bash echo ...

grow up 1417

FPGA面试题目笔记(一)——FPGA开发流程、亚稳态和竞争冒险、建立保持时间、异步FIFO深度等

同步异步电路、同步异步复位、时钟偏移和抖动、最小工作周期计算、触发器锁存器

H19981118的博客 1万+

openwrt之luci通信原理(一)

从模板中分离,每个LuCI2子页面也需要一个定义并存放在/www/luci2/view/目录下的一个视图,视图是使用了子页面特定对象的L.ui.view扩展的JavaScript文件。有一点需要注意的是需要提供execute方法,创建视图失败有几种原因,特别是当它需要ubus加载额外的数据使用的时候。所以在execute方法中提供成功或者失败的信息是有意义的。不幸的是在异步方法加载特定数据的时候,不能简单的返回true或false,解决的方法是返回一个Promise对象来运行推迟提供是否成功的信息。

1149

Shell——read命令的使用

Shell中read命令的使用,以及利用read命令按行读取文件内容

王元笙 5866

R语言 百度坐标转换至WGS84坐标

本文利用R语言封装了百度坐标转换至WGS84坐标的函数,亲测有效,提供了便捷的百度坐标转换方法。

qingchen98的博客 2135

shell(4、5)

🌟声明🌟红客全栈教程学习视频来自UP,如涉及侵权马上删除文章以下只涉及学习内容,其他都与本人无关,切莫逾越法律红线,否则后果自负。星河飞雪网络安全人才培养计划,绝对零区,公益免费教学!没有网络安全,就没有国家安全!

My博客 551

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

read 和 echo

read -p 和 echo 键盘读入,屏幕输出,5秒超时[root@localhost ~]# cat read.sh#!/bin/bashread -t 5 -p "Please input a string:" stringecho $string 转载于:https://blog.51cto.com/hhx012/1731460...

weixin_33743703的博客 143

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

shell脚本_脚本与用户交互以及if条件判断

掌握脚本与用户交互的基本技巧和条件判断的使用,能让我们在日常的自动化任务中更加得心应手,也为脚本的编写和优化提供了强大的支持。希望本篇内容能够帮助你更好地理解并应用 Bash 脚本中的常见操作,为你的自动化脚本开发提供更多思路和方法。

星海幻影的博客 1621

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

shell脚本-如何和用户交互输入

Shell脚本:使用read命令来读取用户输入,语法简单,适合在命令行环境中快速编写脚本。C语言:使用scanf函数来读取用户输入,需要包含头文件<stdio.h>,并且需要处理缓冲区溢出等安全问题。Python:使用input函数来读取用户输入,语法简洁,易于阅读和编写,适合快速开发和脚本编写。每种语言都有其适用的场景和优势,选择哪种语言取决于你的具体需求和环境。

sq2048935747@163.com的博客 2057

【shell脚本4-7——shell的用户交互与if条件判断及for、while循环结构】

首先就要掌握其最为基础的判断及循环结构的用法,本文详细的归纳了shell脚本语言的用户交互与if条件判断及for、while循环结构。

gdgzcsz1989的博客 2089

linux shell用户交互,shell中while read 用户交互输入

在shell中,read用于完成用户的交互输入,while用来控制循环结构,二者的结合,可以完成较为复杂的用户交互输入。1,read命令,主要完成用户的交互输入。参数如下:-a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。-d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志,会举例说 明。-p 后面跟提示信息,即在输入前打印提示信息。-e 在输入的时...

weixin_28876369的博客 890

11. shell当中read详解,read语法选项,read用法示例,脚本示例,while read line详解,掌握原则

shell当中read详解,read语法选项,read用法示例,脚本示例,while read line详解,掌握原则 1.1 shell read简介 要与Linux交互,脚本获取键盘输入的结果是必不可少的,read可以读取键盘输入的字符。 read [-rs] [-a ARRAY] [-d delim] [-n nchars] [-N nchar

Oracle/MySQL 到 国产信创数据库|迁移 · 调优 · 信创替换 1万+

Linux shell脚本 (六)与用户交互

与用户交互8.1 echo​ echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。echo [-options] [string]-n #不要在最后自动换行 -e #处理转义字符例如:where@ubuntu:~$ echo -n "helloworld" helloworldwhere@ubuntu:~$ 再举个例子:where@ubuntu:~$ echo -e "\f\x30...

qq769651718的专栏 4027

shell编程(4)脚本与用户交互以及if条件判断

利用read命令来接收用户的输入,输入read name age,敲击回车后窗口会停顿等待接收输入,我们填写feng 18并敲击回车,此时变量name便会被赋值feng,变量age会被赋值18 然后我们利用echo $name来打印变量name的值 利用echo $age来打印变量age的值

风依旧的博客 1022

shell命令之read

read:简介:read命令从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY。语法read(选项)(参数选项Read可以带有-a, -d, -e, -n, -p, -r, -t, 和 -s八个选项。-a :将内容读入到数值中echo...

duanbiren123的博客 1119

泷羽sec-shell编程(4)脚本与用户交互以及if条件判断 学习笔记

声明!学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](

weixin_44334319的博客 1217

关于Shell脚本read传参问题

Shell脚本传参有两种方式:方式1:sh file.sh arg1 arg 2....方式2:read -p "提示" arg 1 arg2默认参数直接是以空格进行区分的,下面通过几个实例讲解一下传参遇到的问题及困惑方式一:通过脚本实例展示[root@data-1-2~]#catarg1.sh #!/bin/bash funChag(){ echo$1...

weixin_34266504的博客 845

Shell脚本

一.自定义局部变量:就是定义在一个脚本文件的变量,只能在这个脚本中使用的变量,就是局部变量名字=数值1.变量名称可以由字母数字下划线,不能以数字开头2.等号两侧不能有空格3.在bash环境中,变量的默认类型都是字符串类型的,无法直接进行数值运算4.变量的值如果有空格必须使用 ""括起来5.不能使用shell关键字作为名称调用变量语法$变量名${变量名}区别{}格式适合拼接字符串unset 变量名2.自定义常量:就是变量设置值以后不可以修改的变量就叫常量,也叫只读变量。

hddhdbbxndn12的博客 1442
上一篇: Shell脚本4 -- 数学运算
下一篇: Shell脚本6 -- 条件判断if
?crying
博客等级 码龄7年 449粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值