Linux shell编程(五)shell脚本常用函数和命令(5)read 详解

linux shell脚本编程 自动化脚本 awk sed grep find 文本分析 LinuxShell命令行及脚本编程实例详解_shell脚本 ‘find -name‘ while循环 还有一种更简单的检查变量是否存在的方法 使用 if语句来判断。 阅读详情
shell脚本常用函数和命令(5)read 详解
1)命令格式
read [ -p ][  -r ][ -s ][ -u[ n ] ] [  VariableName ]

read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量,用 IFS(内部字段分隔符)变量中的字符作为分隔符。
VariableName 参数指定 shell 变量的名称,shell 变量获取输入行一个字段的值。由VariableName 参数指定的第一个 shell 变量指定给每一个字段的值,
由VariableName参数指定的第二个shell变量指定给第二个字段的值,以此类推,直到最后一个字段。如果标准输入行的字段比相应的由 VariableName 参数指定的 shell 变量的个数多,
把全部余下的字段的值赋给指定的最后的 shell 变量。如果比 shell 变量的个数少,则剩余的 shell 变量被设置为空字符串。

注意: 如果省略了 VariableName 参数,变量 REPLY 用作缺省变量名。

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

1)基本读取-p
read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说)。得到输入后,read命令将数据放入一个标准变量中。
#!/bin/bash
echo -n "Enter your name:"   //参数-n的作用是不换行,echo默认是换行
read  name                   //从键盘输入
echo "hello $name,welcome to my program"     //显示信息
exit 0                       //退出shell程序。

由于read命令提供了-p参数,允许在read命令行中直接指定一个提示。
[root@controller1 ~]# read -p "Enter your name:" name
Enter your name:xiao ming
[root@controller1 ~]# echo $name
xiao ming

在上面read后面的变量只有name一个,也可以有多个,这时如果输入多个数据,则第一个数据给第一个变量,第二个数据给第二个变量,如果输入数据个数过多,则最后所有的值都给第一个变量。如果太少输入不会结束。

在read命令行中也可以不指定变量.如果不指定变量,那么read命令会将接收到的数据放置在环境变量REPLY中。
[root@controller1 ~]# read -p "input num:"
input num:11 22 33
[root@controller1 ~]# echo $REPLY
11 22 33

环境变量REPLY中包含输入的所有数据,可以像使用其他变量一样在shell脚本中使用环境变量REPLY.
2)数组读取 -a
[root@controller1 ~]# read -a item
aa bb cc dd 
[root@controller1 ~]# echo ${item[3]}
dd
[root@controller1 ~]# echo ${item[0]}
aa
利用数组读入多个参数,用数组下标取得参数

3)计时输入 -t 5:
使用read命令存在着潜在危险。脚本很可能会停下来一直等待用户的输入。如果无论是否输入数据脚本都必须继续执行,那么可以使用-t选项指定一个计时器。
-t选项指定read命令等待输入的秒数。当计时满时,read命令返回一个非零退出状态;
#!/bin/bash
if read  -t 5 -p "please enter your name:" name
then
    echo -e "hello ${name} ,welcome to linux world!\n"
else
    echo -e "sorry,too slow\n"
fi
exit 0

3)计数输入 -n 1:
除了输入时间计时,还可以设置read命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。
#!/bin/bash
read –n 1 -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命令立即接受输入并将其传给变量。无需按回车键。
如果该脚本不能执行,用dos2unix转换一下格式

4)默读 -s :(输入不显示在监视器上)
有时会需要脚本用户输入,但不希望输入的数据显示在监视器上。典型的例子就是输入密码,当然还有很多其他需要隐藏的数据。
-s选项能够使read命令中输入的数据不显示在监视器上(实际上,数据是显示的,只是 read命令将文本颜色设置成与背景相同的颜色)。
[root@controller1 ~]# read -s -p "enter passwd:"pass
enter passwd:

5)读文件
最后,还可以使用read命令读取Linux系统上的文件。
每次调用read命令都会读取文件中的"一行"文本。当文件没有可读的行时,read命令将以非零状态退出。
读取文件的关键是如何将文本中的数据传送给read命令。

最常用的方法是对文件使用cat命令并通过管道将结果直接传送给包含read命令的 while命令
[root@controller1 ~]# cat >myread.sh<<eof
#!/bin/bash
count=1     #//赋值语句,不加空格
cat /root/demo-openrc | while read line     #//cat 命令的输出作为read命令的输入,read读到的值放在line中
do #demo-openrc为要读的文件
   echo "Line $count:$line"
   count=$[ $count + 1 ]           #//注意中括号中的空格。
done
echo "======read file finish====="
exit 0
eof

[root@controller1 ~]# sh myread.sh 
Line 1:export OS_PROJECT_DOMAIN_NAME=Default
Line 2:export OS_USER_DOMAIN_NAME=Default
Line 3:export OS_PROJECT_NAME=demo
Line 4:export OS_USERNAME=demo
Line 5:export OS_PASSWORD=123456
Line 6:export OS_AUTH_URL=http://172.16.100.70:5000/v3
Line 7:export OS_IDENTITY_API_VERSION=3
Line 8:export OS_IMAGE_API_VERSION=2

======read file finish=====



linux常用命令和shell编程 Red Hat Linux 9 编程开发与网络管理 冉林仓 电子工业出版社 2006 (将linux系统的各种情况和dos系统做了对比)UNIX基础教程 龚汉明等 清华大学出版社 2007Linux应用开发技术详解 范永开等 人民邮电出版社 2006Linux Shell 脚本攻略 Sarath Lakshman 人民邮电出版社 2011。 阅读详情

相关推荐

SHELL脚本read命令的具体用法

1.1 shell read简介 要与Linux交互,脚本获取键盘输入的结果是必不可少的,read可以读取键盘输入的字符。 shell作为一门语言,自然也具有读数据的功能,read就是按行从文件(或标准输入或给定文件描述符)中读取数据的最佳选择。当使用管道、重定向方式组合命令时感觉达不到自己的需求时,不妨考虑下while read line。 read [-rs] [-a ARRAY] [-d delim] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [var_name1 var_name2 …] read命令用于从标

bash shell之数组使用

摘要: 1、array=(value1 value2 ...... valueN)    #赋值 2、read -a array                                  #读入数组 3、${array[@]}    ${!array[@]}     ${#array[@]}     ${array[@]:n:m}      #数组信息,数组下标,数组长度

qhexin的专栏 1189

伺服驱动器485通信

485通信使用方法,485通信在上位机和伺服驱动器之间的应用,根据需要驱动电机旋转。

haipi511715316的博客 1万+

Linux Shell学习:使用read从标准输入中读取一行

http://www.lampbo.org/category/linux-xuexi/page/4 Linux Shell学习:使用read从标准输入中读取一行 2012年06月12日 ⁄ linux ⁄ 暂无评论 read是Linux的一个内建命令,主要完成对参数的赋值,类似C语言中的 scanf。其不仅可以赋值变量,还可以赋值数组;其输

追求梦想 4043

SAP ABAP ALV表格实战:5分钟搞定单元格下拉框配置(附完整代码)

本文详细介绍了在SAP ABAP开发中如何快速配置ALV表格的单元格下拉框功能,通过5分钟实战教程帮助开发者掌握关键步骤。文章包含完整的ABAP代码示例,涵盖下拉值定义、字段目录配置及ALV控件绑定等核心操作,特别适合需要实现财务系统费用类型选择或采购系统物料分类等场景的开发者参考。

weixin_28331555的博客 108

告别玄学调参:手把手教你用20元件模型搞定GaN HEMT高频仿真(附S参数提取避坑指南)

本文详细介绍了如何使用20元件模型优化GaN HEMT高频仿真,解决传统16元件模型在10GHz以上频段的误差问题。通过S参数提取避坑指南和实战案例,帮助工程师精准建模分布式电极效应和寄生反馈路径,提升射频电路设计效率。

weixin_42523693的博客 441

linux 命令:read 详解

linux 命令:read 详解

yspg_217的博客 7163

遥感大模型的深度学习从CNN到Vision Transformer以及混合架构的演进之路

深度学习,特别是以卷积神经网络(CNN)和Transformer为代表的“大模型”技术,正以其强大的表征学习能力,深刻地重塑着遥感智能解译的整个技术栈与认知范式。本文将系统性地梳理遥感大模型从局部卷积的奠基,到全局注意力的革命,再到二者融合的混合架构演进这一波澜壮阔的历程。我们将深入剖析每个阶段的核心技术原理,结合遥感数据特性与实际应用案例,详细阐述其在分类、检测、分割等核心任务中的具体应用。

panshengwu的博客 1138

SHELL脚本--read命令

原文地址::https://www.cnblogs.com/xl-892694298/p/11017168.html 相关文章 1、shell脚本中read命令的使用技巧----https://blog.youkuaiyun.com/wdz306ling/article/details/79557931 2、SHELL脚本--read命令----https://www.cnblogs.com/f-ck-need-u/p/7402149.html 3、shell之read用法----https://blog.cs

xqhrs232的专栏 644

手把手教你用STM32F103的IO口模拟XY2-100协议驱动数字振镜(附Keil O3优化代码)

本文详细介绍了如何使用STM32F103的IO口模拟XY2-100协议驱动数字振镜,包括协议解析、偶校验算法、寄存器级优化及Keil O3编译下的性能调优。通过硬件配置、核心代码实现和优化技巧,帮助开发者实现高速二维偏转控制,适用于工业激光雕刻和精密定位系统。

weixin_42527401的博客 260

2025年CSP-X初赛真题及答案解析(江西)(完善程序第1题)

2025年CSP-X初赛真题及答案解析(江西)(完善程序第1题)

王老师青少年编程 712

Shell read命令详解

官方解释:接收键盘或其它文件描述符的输入。read 命令接收标准输入(键盘)的输入,或者其他文件描述符的输入。得到输入后,read 命令将数据放入一个标准变量中。 read 命令格式如下: #read [选项] [变量名] 选项: -p:“提示信息”:在等待read输入时,输出提示信息; -t :秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间; -n:字符数:read命令只接收指...

汤介奇的博客 1万+

如何给K8S配置一个具有永久有效的kubeconfig

在 Amazon EKS 环境中,Kubernetes 的认证机制与 AWS IAM 深度集成,通过aws-iam-authenticator动态生成临时凭证。这种设计虽然增强了安全性,但给需要持久化凭证的工具链(如 CI/CD 系统中的 KubeVela)带来了挑战。具体表现为:临时凭证失效​​:默认 Token 有效期为 15 分钟至 1 小时;​​IAM 角色限制​​:直接使用aws eks get-token生成的凭证无法持久化

小杨同学的博客 659

Linux命令行与shell脚本编程大全(一)

一、基本 bash shell命令 创建文件 : touch 链接文件:符号链接:是一个实实在在的文件,两个通过符号链接在一起的文件,彼此的内容并不相同。使用ln -s命令。 硬链接:会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但他们从根本上而言是同一个文件。原始文件必须事先存在,使用ln命令。 查看文件类型 : file 查看整个文件 : cat , more , less ...

liouyi250的博客 4万+

智能车图像处理0-图像处理整体框架思路

1.总体框架如上所示,具体代码请查看后续文章。2.因为参与竞赛时间是大二,所以在编程中有许多不规范的地方(如变量的命名),大家见谅。3.原创文章,请勿侵权=-=

taiyuezyh的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Linux的Shell脚本编程:掌握read命令与函数应用

Shell脚本支持自定义函数,可以封装重复使用的代码块。/bin/bashgetSum() {echo "两数之和为: $SUM"read -p "请输入第一个数: " num1read -p "请输入第二个数: " num2自定义函数getSum接受两个参数,计算并输出它们的和。Shell脚本编程是一种强大的自动化工具,read命令、循环结构和函数是其重要组成部分。通过灵活使用这些功能,可以实现复杂的交互式脚本,提高系统管理和运维效率。

jay丿的博客 1170

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Linux Shell 脚本编程基础知识篇—shell 运算命令详解

各位好,我是练小杰,本文继续Linux shell脚本编程的基础知识内容,接着讲算术运算命令的详细操作,主要是led命令,read命令,be命令,expr命令等。

weixin_55767624的博客 1736

嵌入式 Linux 入门(五、Shell 脚本编程上:认识 Shell 脚本)

嵌入式 Linux入 门第五课,本课开始学习一下 Shell 脚本编程,我们从认识 Shell 脚本开始。

不浮夸,不将就,认真对待学知识的我们 4591

Linux之Shell脚本编程入门

Linux之Shell脚本编程入门,包括shell变量、运算符、条件判断、流程控制等语法案例

yuanjinshenglife的专栏 2327

Linux命令和shell脚本

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。shell就是用户与linux交换的一款语言。

2403_83201286的博客 1145

linux-Shell 编程-常用 Shell 脚本技巧

定义变量# 引用变量时需要加 $ 符号注意:在赋值时等号两边不能有空格。echo "Hello, this is a function" } # 调用函数 my_function自动化文件备份:定期备份文件并压缩。日志管理:将脚本执行的日志记录到文件。批量处理文件:遍历目录中的所有文件并执行操作。dodone4. **系统监控脚本**:定时监控 CPU、内存、磁盘使用情况,并发送警告邮件。```bash/bin/bashthenfi环境变量:利用环境变量在脚本中传递信息。

Flying_Fish_roe的博客 1492

shell脚本常用命令

if [ $a -gt 5 ] && [ $a -lt 10 ] == if [ $a -gt 5 -a $a -lt 10] # -a表示 and。if [ $b -gt 5 ] || [ $b -lt 3] == if [ $b -gt 5 -o $b -lt 3 ] # -o表示 or。echo ${a[@]:0-3:2} 表示从倒数第3个元素开始,截取2个元素,并打印出来。命令echo ${a[@]:1:4} 表示从第二个元素开始,截取4个元素,并打印出来。

2301_82330629的博客 1718

Linux系统之read 命令详解

read 命令用于从标准输入(通常是终端)或指定的文件描述符读取一行输入,并将输入行的每个字段分配给指定的 shell 变量。它是 shell 脚本中实现用户交互的关键命令。

weixin_56303229的博客 1439

Linux Shell 命令详解

linux shell命令详细介绍和使用举例

不会C++、害怕嵌入式且不爱看动漫的小趴菜 2万+

linux-Shell 编程-Shell 脚本基础

Shell脚本是由一系列Linux命令组成的文本文件,通常用于自动化完成任务。Shell脚本可以在终端中运行,而无需逐个输入命令。Shell脚本的扩展名通常为.sh,但这不是强制性的。在Shell脚本中,变量的使用是非常灵活的。变量名必须以字母或下划线开头,不能以数字开头。定义变量引用变量在引用变量时,需要在变量名前加上# 函数体Shell脚本是Linux系统管理中不可或缺的工具。通过Shell编程,用户可以自动化处理系统任务、文件操作、网络操作等一系列功能。

Flying_Fish_roe的博客 1697
上一篇: Linux shell编程(五)shell脚本常用函数和命令(4)export详解
下一篇: Linux shell编程(五)shell脚本常用函数和命令(6)seq 详解
openbox2008
博客等级 码龄9年 147粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值