read指令使用方法
read命令用于从标准输入中读取输入单行,并将读取的单行根据IFS变量分裂成多个字段,并将分割后的字段分别赋值给指定的变量列表var_name。第一个字段分配给第一个变量var_name1,第二个字段分配给第二个变量var_name2,依次到结束。如果指定的变量名少于字段数量,则多出的字段数量也同样分配给最后一个var_name,如果指定的变量命令多于字段数量,则多出的变量赋值为空。
如果没有指定任何var_name,则分割后的所有字段都存储在特定变量REPLY中
常用参数
-p:给出提示符。默认不支持"\n"换行
-s:静默模式。输入的内容不会回显在屏幕上
-t:给出超时时间,在达到超时时间时,read退出并返回错误
-n:限制读取N个字符就自动结束读取,如果没有读满N个字符就按下回车或遇到换行符,则也会结束读取
-N:严格要求读满N个字符才自动结束读取,即使中途按下了回车或遇到了换行符也不结束。其中换行符或回车算一个字符
-a:将分裂后的字段依次存储到指定的数组中,存储的起始位置从数组的index=0开始
-p:给出提示符
简短示例
#!/bin/bash
read -p "print a number: " num
if [ $num -eq 5 ]; then
echo "input right" && echo $num
else
echo "input error"
fi
exit
#执行
[root@localhost testsh]#./read.sh
print a number: 5
input right
如果没有指定变量,read会把传入的值传给$REPLY,只要调用$REPLY就可以引用
#!/bin/bash
read -p "print a number: "
if [ $REPLY -eq 5 ]; then
echo "input right" && echo $REPLY
else
echo "input error"
fi
exit
-t:给出超时时间,在达到超时时间时,read退出并返回错误
#!/bin/bash
##
if read -t 5 -p "input a number: " num
then
echo "$num inputed"
else
echo "timeout"
fi
exit
#执行
[root@localhost testsh]#./timeout.sh
input a number: timeout
-n:限制读取N个字符就自动结束读取,如果没有读满N个字符就按下回车或遇到换行符,则也会结束读取
[root@localhost testsh]#read -n 5
12345[root@localhost testsh]#
[root@localhost testsh]#read -n 5
123
-a:将分裂后的字段依次存储到指定的数组中,存储的起始位置从数组的index=0开始
[root@localhost testsh]#read -a value
1 2 3 4
[root@localhost testsh]#echo ${value[0]}
1
[root@localhost testsh]#echo ${value[1]}
2
[root@localhost testsh]#echo ${value[2]}
3
[root@localhost testsh]#echo ${value[3]}
4
read读取文件内容
#!/bin/bash
##
#read file ip.txt
cat /mnt/ip.txt | while read IP
do
echo "the ip : $IP"
done
echo "finsh"
exit
执行读取ip.txt内容结果
the ip : 192.168.11.10
the ip : 192.168.11.11
the ip : 192.168.11.12
the ip : 192.168.11.13
the ip : 192.168.11.14
the ip : 192.168.11.15
the ip : 192.168.11.16
the ip : 192.168.11.17
the ip : 192.168.11.18
the ip : 192.168.11.19
finsh
或者使用for循环读取
for IP in `cat /mnt/ip.txt`
do
echo $IP
done
read指令还可以将接收的值作为case语句判断的条件值,使用如下
#!/bin/bash
read -t 30 -p "Do you want exit script[Y/N]?" char
case "$char" in
"Y" | "y")
echo "bye"
;;
"N" | "n")
echo "stay"
;;
*)
echo "output error,please input N,n/Y.y"
;;
esac
执行
[root@localhost testsh]#./bak.sh
Do you want exit script[Y/N]?n
stay
read指令使用方法的更多相关文章
- controller 和 指令 通讯方法
在 angular 中我们经常会使用多个 controller 和 指令 他们拥有各自的 $scope , 这就产生了跨$scope调用的问题. 有几种常见的方法来可以使用. 方法一 : 指令 req ...
- Xshell同时向多个会话发送指令的方法
我们平时使用XSHELL.SecureCRT.putty等ssh连接工具连接到远程主机,每次输入指令都是在单一会话窗口,如果有很多台会话,需要同时输入同样的指令,我们就不用一一输入,浪费时间和精力.可 ...
- SDI011 读卡器自动发送00A4选择指令 解决方法
如标题,SDI读卡器会自动发送 004A的应用选择指令 解决方法: 是Certificate Propagation 服务 弄的, 关闭就好了
- nginx root、alias、location指令使用方法
一.nginx root指令 1. Nginx配置 相关配置如下图: 通过配置root目录到"/wwwroot/html/"位置 在用虚拟主机方法,主机名称是test,需要大家配置 ...
- Vue自定义指令使用方法详解 和 使用场景
Vue自定义指令的使用,具体内容如下 1.自定义指令的语法 Vue自定义指令语法如下: Vue.directive(id, definition) 传入的两个参数,id是指指令ID,definitio ...
- ARM汇编指令调试方法
学习ARM汇编时,少不了对ARM汇编指令的调试.作为支持多语言的调试器,gdb自然是较好的选择.调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控.为了在 ...
- V-MODEL指令实现方法
V-MODEL 是VUE 的一个指令,在input 控件上使用时,可以实现双向绑定. 通过看文档,发现他不过是一个语法糖. 实际是通过下面的代码来实现的: <%@ page language ...
- Dockerfile的书写规则及指令使用方法
Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将读取Dockerfile,根据指令生成定制的ima ...
- Vue学习五:v-for指令使用方法
本文为博主原创,未经允许不得转载: <!DOCTYPE html> <html lang="zh"> <head> <meta http- ...
- Vue学习四:v-if及v-show指令使用方法
本文为博主原创,未经允许不得转载: <!DOCTYPE html> <html lang="zh"> <head> <meta http- ...
随机推荐
- 1093 Count PAT's(25 分)
The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and ...
- @Modifying 注解完成修改操作
以上我们做的都是查询,那要如何实现 修改.删除和添加呢? 可以通过以下两种方式: (1)通过实现 CrudRepository 接口来完成(以后介绍): (2)通过 @Modifying 注解完成修改 ...
- Unity 碰撞的条件
- linux高级编程基础系列:线程间通信
linux高级编程基础系列:线程间通信 转载:原文地址http://blog.163.com/jimking_2010/blog/static/1716015352013102510748824/ 线 ...
- (转)不看绝对后悔的Linux三剑客之awk实战精讲
原文:http://blog.51cto.com/hujiangtao/1923930 一.Linux三剑客之awk命令精讲 第1章 awk基础入门 1.1 awk简介 awk不仅仅时linux系统中 ...
- Spark Mllib里的分层抽样(使用map作为分层抽样的数据标记)
不多说,直接上干货! 具体,见 Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mllib数理统计
- form中onsubmit的使用
form 中的onsubmit在点submit按钮时被触发,如果return false;则结果不会被提交到action中去(也就是提交动作不会发生),如果不返回或者返回true,则执行提交动作.(& ...
- 敏捷开发(Agile development)
敏捷开发(Agile development) 敏捷开发是一种以人为核心.迭代.循序渐进的开发方法.在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征. ...
- Java中的do-while循环——通过示例学习Java编程(11)
作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=22&cid=0 在上一篇教程中,我们讨论了w ...
- 【踩坑】服务器部署springboot应用时报错--端口被tomcat占用
今天将本机尬聊一下项目(基于netty-socketio)的服务端程序调试好以后,通过jar包部署在服务器的时候,出现了报错,提示tomcat已经占用了端口. 之前在部署iReview项目时的确是通过 ...