shell之read命令

一、概述

read命令接收标准输入(键盘)的输入,或者其他文件描述符的输入。得到输入后,read命令将数据放入一个标准变量中。

二、使用举例(这里仅列出一些常用的选项)

1.基本读取

#!/bin/bash echo -n "Enter your name:"           #参数-n的作用是不换行,echo默认是换行 read  name                           #从键盘输入 echo "hello $name, welcome to my program"   exit 0                               #退出shell程序。

其等效于以下:

read -p "Enter your name:" name       #-p参数,允许在read命令行中直接指定一个提示

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

2.在read命令行中也可以不指定变量

如果不指定变量,那么read命令会将接收到的数据放置在环境变量REPLY中

read -p "Enter a number" echo $REPLY

3.计时输入
使用read命令存在着潜在危险。脚本很可能会停下来一直等待用户的输入。如果无论是否输入数据脚本都必须继续执行,那么可以使用 -t 选项指定一个计时器,指定read命令等待输入的秒数。当计时满时,read命令返回非零值(0为正常退出状态);

#!/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 

3.设置计数输入的字符
当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。

#!/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";; esacexit 0 

该例子使用了-n选项,后接数值1,指示read命令只要接受到一个字符就退出。只要按下一个字符进行回答,read命令立即接受输入并将其传给变量。无需按回车键。 
4.默读(输入不显示在监视器上)

有时不希望输入的数据显示在监视器上。典型的例子就是输入密码,当然还有很多其他需要隐藏的数据。-s 选项能够使read命令中输入的数据不显示在监视器上(实际上,数据是显示的,只是read命令将文本颜色设置成与背景相同的颜色)。

#!/bin/bash read  -s  -p "Enter your password: " pass echo "your password is $pass" exit 0 

5.读文件

每次调用read命令都会读取文件中的"一行"文本。当文件没有可读的行时,read命令将以非零状态退出。读取文件的关键是如何将文本中的数据传送给read命令。最常用的方法是对文件使用cat命令并通过管道将结果直接传送给包含read命令的while命令 。

#!/bin/bash count=1cat dat| while read line        #cat 命令的输出作为read命令的输入,read读到的值放在line中 do    echo "$count:$line"    count=$(($count + 1))doneexit 0

时间: 2025-01-07 14:06:21

shell之read命令的相关文章

shell基础--test命令的使用

test :用于文件类型检查和变量比较 一.用途: 1.判断表达式 2.判断字符串 3.判断整数 4.判断文件 测试例子: (1).test [[email protected]~_~ day5]# cat test.sh #!/bin/bash a=$1 b=$2 if test $a -eq $b then echo "a=b" else echo "a!=b" fi [[email protected]~_~ day5]# sh test.sh 1 1 a=b

shell后台执行命令-crontab

名词解释: cron 系统调度进程,可通过它按照一定的时间间隔或固定的时间点运行作业 &   使用它在后台运行一个占用时间不长的进程 注: cron是系统的调度进程,可在无人干预的情况下运行作业,通过crontab的命令允许用户提交,编辑或删除相应的作业. 每个用户都有一个crontab文件来保存作业调度信息,通过该命令运行任意一个shell脚本或命令 在大的系统中,系统管理员可以通过cron.deny和cron.allow这两个文件来禁止或允许用户拥有自己的crontab文件. crontab

[SHELL]判断一个命令是否存在

首先要说明的是,不要使用which来进行判断,理由如下: 1.which非SHELL的内置命令,用起来比内置命令的开销大,并且非内置命令会依赖平台的实现,不同平台的实现可能不同. # type type type is a shell builtin # type command command is a shell builtin # type which which is hashed (/usr/bin/which) 2.很多系统的which并不设置退出时的返回值,即使要查找的命令不存在,

shell的内部命令和外部命令

shell命令分成内置命令和外部命令. 内置命令(builtin command) 是shell解释程序内建的,有shell直接执行,不需要派生新的进程.有一些内部命令可以用来改变当前的shell环境. 常见的内部命令有:.(点命令).bg.cd.continue.echo.exec.exit.export.fg.jobs.pwd.read.return.set.shift.test.times.trap.umask.unset和wait. 外部命令(external command) 又分两种

linux shell 和linux 命令的区别?windows shell 和 windows 命令呢?

shell翻译成壳的意思,它是包裹在linux内核外层的,一个可通过一系列的linux命令对操作系统发出相关指令的人机界面. shell可以通过其条件语句和循环语句等,把一系列linux命令结合在一起,形成一个相当于面向过程的程序,shell script,来实现一些较为复杂的功能.总括,shell是linux命令集的概称,是属于命令行的人机界面.Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言.Shell 是指一种应用程序,这

Bash Shell内建命令和保留字

Bash Shell内建命令和保留字命令含义!保留字,逻辑非:不做任何事,只做参数展开.读取文件并在shell中执行它alias设置命令或命令行别名bg将作业置于后台运行bind将关键字序列与readline函数或宏捆绑break保留字,跳出for.while.until.select循环builtin调用命令的内建命令格式,而禁用同名的函数.或者同名的扩展命令case保留字,多重选择cd切换当前工作目录command找出内建和外部命令:寻找内建命令而非同名函数continue保留字,到达下次f

Linux 基础知识:Bash Shell 内置命令

bash内置命令无须搜寻环境变量$PATH中提供的路径,直接可以执行,因此速度很快. 以下介绍几个简单.必备的命令用法. 1. help 用途:显示所有bash内置命令的列表,或某一个内置命令的用法. 用法: 4help 执行结果:显示所有内置命令的列表. 4help –s 内置命令 执行结果:显示内置命令的语法格式. 用例: help cd 显示cd命令的详细用法. help –s printf printf: printf [-v var] format [arguments] 显示prin

javascript 的Date 格式化, 模仿shell中date命令的格式

原文:javascript 的Date 格式化, 模仿shell中date命令的格式 shell 中显示当前的日期 [[email protected]]$ date '+%Y-%m-%d %H:%M:%S' 2015-01-19 16:24:58 把javascript 中的Date object 格式化成适合的字符串,很不方便,模拟shell中的格式 下面先用3段简单的代码来说明模拟函数中用到的特性 字符串的replace var a = '1234' undefined a.replace

Shell下的命令代换与eval命令

在shell中,如果想获得一个命令的返回值,如果为整数,可以直接用$?获取其退出码. 但如果一条命令的返回值不是整数,怎么实现? 不得不提shell下的命令代换功能! 两种方式实现命令代换 假设我们某个变量需要获得当前时间,则可以这样实现: date=`date` echo $date 或者也可以这样 date=$(date) echo $date 这两种方式都可以实现命令代换的功能,那么他们有何不同? 两种命令代换方式的区别 1.$()看起来比较简洁,而``很容易与''进行混淆. 2.在多层替

bourne again shell内建命令

内建命令(build-in commands)是shell build-in的命令,当内建命令使用的时候,shell将会直接执行,无需新建子进程.内建命令被用来创建一些功能性的或者便捷性的组建. bash支持3中类型的内建命令 Bourne Shell build-ins : , . break cd continue eval exec exit export getopts hash pwd readonly return set shift test [ times trap umask