shell--read命令
read命令 -p(提示语句) -n(字符个数) -t(等待时间) -s(不回显)
1、基本读取
read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说)。得到输入后,read命令将数据放入一个标准变量中。下面是read命令
的最简单形式::
1
2
3
4
5
|
#!/bin/bash echo - n "Enter your name:" / / 参数 - n的作用是不换行,echo默认是换行 read name / / 从键盘输入 echo "hello $name,welcome to my program" / / 显示信息 exit 0 / / 退出shell程序。 |
由于read命令提供了-p参数,允许在read命令行中直接指定一个提示。
所以上面的脚本可以简写成下面的脚本::
1
2
3
4
|
#!/bin/bash read - p "Enter your name:" name echo "hello $name, welcome to my program" exit 0 |
在上面read后面的变量只有name一个,也可以有多个,这时如果输入多个数据,则第一个数据给第一个变量,第二个数据给第二个变量,如果输入数据个数过多,则最后所有的值都给第一个变量。如果太少输入不会结束。
在read命令行中也可以不指定变量.如果不指定变量,那么read命令会将接收到的数据放置在环境变量REPLY中。
例如::
read -p "Enter a number"
环境变量REPLY中包含输入的所有数据,可以像使用其他变量一样在shell脚本中使用环境变量REPLY.
2、计时输入.
使用read命令存在着潜在危险。脚本很可能会停下来一直等待用户的输入。如果无论是否输入数据脚本都必须继续执行,那么可以使用-t选项指定一个计时器。
-t选项指定read命令等待输入的秒数。当计时满时,read命令返回一个非零退出状态;
1
2
3
4
5
6
7
8
|
#!/bin/bash if read - t 5 - p "please enter your name:" name then echo "hello $name ,welcome to my script" else echo "sorry,too slow" fi exit 0 |
除了输入时间计时,还可以设置read命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。
1
2
3
4
5
6
7
8
9
10
11
|
#!/bin/bash read - n1 - 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命令立即
接受输入并将其传给变量。无需按回车键。
3、默读(输入不显示在监视器上)
有时会需要脚本用户输入,但不希望输入的数据显示在监视器上。典型的例子就是输入密码,当然还有很多其他需要隐藏的数据。
-s选项能够使read命令中输入的数据不显示在监视器上(实际上,数据是显示的,只是read命令将文本颜色设置成与背景相同的颜色)。
1
2
3
4
|
#!/bin/bash read - s - p "Enter your password:" pass echo "your password is $pass" exit 0 |
4、读文件
最后,还可以使用read命令读取Linux系统上的文件。
每次调用read命令都会读取文件中的"一行"文本。当文件没有可读的行时,read命令将以非零状态退出。
读取文件的关键是如何将文本中的数据传送给read命令。
最常用的方法是对文件使用cat命令并通过管道将结果直接传送给包含read命令的while命令
例子::
1
2
3
4
5
6
7
8
9
|
#!/bin/bash count = 1 / / 赋值语句,不加空格 cat test | while read line / / cat 命令的输出作为read命令的输入,read读到的值放在line中 do echo "Line $count:$line" count = $[ $count + 1 ] / / 注意中括号中的空格。 done echo "finish" exit 0 |
shell--read命令的更多相关文章
- linux 基础 shell脚本命令
#########shell脚本命令#### 1.diff diff file file1 ####比较两个文件的不同 -c ####显示周围的行 -u ####按照一格式统一输出生成补丁 -r ## ...
- paip.执行shell cmd 命令uapi java php python总结
paip.执行shell cmd 命令uapi java php python总结 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:h ...
- (转)Hbase shell 常用命令(1)
Hbase shell 常用命令(1) link:http://blog.csdn.net/scutshuxue/article/details/6988348 下面我们看看HBase Shell的一 ...
- Shell printf 命令
Shell printf 命令 printf 命令模仿 C 程序库(library)里的 printf() 程序. 标准所定义,因此使用printf的脚本比使用echo移植性好. printf 使用引 ...
- Shell echo命令
Shell echo命令 echo "It is a test" 这里的双引号完全可以省略 .显示变量 read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shel ...
- 进入BIOS SHELL DUMP 命令
LINUX系统 进入SHELL 输入命令 fs1: or fs0: 就进入了U盘目录 然后输入 ACPIRW.efi -d -s dsdt.bat 就会产生结果到U盘 ——————————————— ...
- Linux Shell : Test命令参数解析
格式: test conditions test -n string : string 不为空 test -z string : string 为空 test int1 -eq int2 : int ...
- shell解析命令行的过程以及eval命令
本文说明的是一条linux命令在执行时大致要经过哪些过程?以及这些过程的大致顺序. 1.1 shell解析命令行 shell读取和执行命令时的大致操作过程如下图: 以执行以下命令为例: echo -e ...
- Shell和命令基础
什么是Shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解析器),Shell接收用户输入的命令并把它送入到内核去执行,结构如下图 Shell的功能 Shell最重要的 ...
- Linux从入门到进阶全集——【第十四集:Shell基础命令】
1,Shell就是命令行执行器 2,作用:将外层引用程序的例如ls ll等命令进行解释成01表示的二进制代码给内核,从而让硬件执行:硬件的执行结果返回给shell,shell解释成我们能看得懂的代码返 ...
随机推荐
- 正则表达式详解<一>
正则表达式是一种处理字符串的微型语言:有以下的基本术语: l 模式(pattern):正则表达式实际上是通过字符串表达的一个模式 l 匹配(match): 判断正则表达式和给出的序列[first ...
- 常用命令 tcl & shell
TCL 常用命令: 1. 当前时间 [exec date +%m%d_%H%M] (实际是调用shell命令 date),比如在 icc 中保存cell 时可以用:save_mw_cel ...
- winform程序打包成exe文件
拿到一个实现功能的winform小程序,如何利用NSIS工具制作安装包? 1.NSIS工具下载地址 点我下载 2.启动NSIS工具,如图点击 3.选择"使用脚本向导创建新的脚本文件" ...
- Spring源码分析(十三)缓存中获取单例bean
摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 介绍过FactoryBean的用法后,我们就可以了解bean加载的过程了 ...
- P2758 编辑距离
题目描述 设A和B是两个字符串.我们要用最少的字符操作次数,将字符串A转换为字符串B.这里所说的字符操作共有三种: 1.删除一个字符: 2.插入一个字符: 3.将一个字符改为另一个字符: !皆为小写字 ...
- 469 B. Intercepted Message
http://codeforces.com/problemset/problem/950/B Hacker Zhorik wants to decipher two secret messages h ...
- atom / vscode (配置c++环境流程)
最初主要是被这个炫酷的插件吸引了,这么打代码太特么有激情了 还有跳舞的初音姐姐哦!! 现附上一篇文章,这篇文章步骤讲得很详细了 http://blog.csdn.net/qq_36731677/art ...
- 安装framework 4.6.2的时报错 “无法建立到信任根颁发机构的证书链”
解决方案: 1.下载证书:MicrosoftRootCertificateAuthority2011.cer 2.开始→运行→MMC 3.文件→添加删除管理单元 (Ctrl+M) 4.证书→计算机账户 ...
- Angular动态表单生成(八)
动态表单生成之拖拽生成表单(下) 我们的动态表单,最终要实现的效果与Form.io的在线生成表单的效果类似,可以参考它的demo地址:https://codepen.io/travist/full/x ...
- UVA - 11927 Games Are Important (SG)
Description Games Are Important One of the primary hobbies (and research topics!) among Computing ...