bash之read命令

bash之read命令

一、概述

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

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

1.基本读取

echo -n            read  name                           echo    
exit 0

其等效于以下:

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

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

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

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

read -p  
echo

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

 read -t 5 -p  name 
then 
    echo  
 
    echo  
fi 
exit 0

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

read -n1 -p  answer 
case   
Y|y) 
    echo ;; 
N|n) 
    echo ;; 
*) 
    echo ;; 
esac
exit 0

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

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

read  -s  -p  pass 
echo  
exit 0

5.读文件

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

count=1
cat dat|  read line         
   echo  
   count=$(( + 1))
done
exit 0
时间: 2024-12-23 02:57:26

bash之read命令的相关文章

bash算数运算&命令替换

1.bash脚本编程之算数运算 + - * / % declare -i num3=5 //直接声明为整数 declare -i num4=6 echo "$num3+$num4" //结果为5+6 (1) let c="$num1+$num2" (2) echo "$[$num1+$num2]" //$中括号和小括号,let,expr (3) echo "$(($sum1+$sum2))" (4) expr $num2 +

BASH 创建一个命令 f1 使之可以简单管理文件版本

创建命令f1 创建一个shell脚本 f1,放到 $PATH 可以找到的位置: f1用法 1. 创建一个文件 foo.txt,并 backup 它 $ cat foo.txt 1 $ f1 backup foo.txt 2. 修改它 $ cat foo.txt 2 3. 还原到上一个版本 $ f1 rollback foo.txt $ cat foo.txt 1 BASH 创建一个命令 f1 使之可以简单管理文件版本,布布扣,bubuko.com

bash算数运算&命令引用

1.bash脚本编程之算数运算 + - * / % declare -i num3=5 //直接声明为整数 declare -i num4=6 echo "$num3+$num4" //结果为5+6 (1) let c="$num1+$num2" (2) echo "$[$num1+$num2]" //$中括号和小括号,let,expr (3) echo "$(($sum1+$sum2))" (4) expr $num2 +

Bash内置命令exec和重定向

Bash内置命令exec可以替换当前程序而不需要启动一个新的进程,可以改变标准输入和输出而不需要启动一个新的子进程.如果文件用exec打开,read命令就会把文件指针每次指向下一行直到文件的末尾,如果要重新从文件开始读取,则必须把文件关闭再重新打开. 1.替换当前shell,执行某个命令,命令终止,shell也就终止了$exec ls 2.打开文件作为当前shell的标准输入$exec <file_name 3.打开文件作为当前shell的标准输出$exec >file_name 4.打开文件

《学习bash》笔记--命令行处理

shell从标准输入或脚本中读取的每行称为一个管道行,它包含一或多个由0个或多个管道符分割的命令,对其读取的每个管道 行,执行下面的操作. 1.将命令分成由固定元字符集分隔的记号:SPACE.TAB.NEWLINE.;.(.).<.>.|和&.记号类型 包括单词.关键字.I/O重定向符和分号. 2.检测每个命令的第一个记号,查看为不带引号或反斜线的关键字.如果是一个开放的关键字,如if和 其他控制结构起始字符串.function.{或(,则命令实际上为一复合命令.shell在内部对复合

Linux Bash内置命令大全详细介绍

转自:http://os.51cto.com/art/201006/207329.htm 主要Shell内置命令 Shell有很多内置在其源代码中的命令.这些命令是内置的,所以Shell不必到磁盘上搜索它们,执行速度因此加快.不同的Shell内置命令有所不同. A.2.1  bash内置命令 .:执行当前进程环境中的程序.同source. . file:dot命令从文件file中读取命令并执行. : 空操作,返回退出状态0. alias:显示和创建已有命令的别名. bg:把作业放到后台. bin

bash功能特性二 命令别名和历史命令

一.历史命令 bash提供存储历史命令的功能,下面来详细介绍一下. 1.history命令 命令格式:history [options] options: 不带参数选项:显示所有使用过的命令: #(数字):显示最近使用过的#条命令: -c:清除目前shell中所有的历史命令: -d #:清除条#条命令: -r:将历史命令配置文件(默认~/.bash_history)中的内容读到目前的shell中: -a [FILE]:将新增的历史命令导入到FILE中,不指定则保存到~/.bash_history

普通用户授权sudo、which搜索命令路径、$PATH路径、bash内置命令有哪些

在root模式对普通用户授权: [[email protected] ~]# visudo ==vi /etc/sudoers 在vi编辑模式,输入98gg,调到98行: ## Allow root to run any commands anywhere root    ALL=(ALL)       ALL 输入yy再输入p表示复制粘贴,并改为keke用户: ## Allow root to run any commands anywhere root    ALL=(ALL)      

【转】Bash Shell中命令行选项/参数处理

原文网址:http://www.cnblogs.com/FrankTan/archive/2010/03/01/1634516.html 0.引言 写程序的时候经常要处理命令行参数,本文描述在Bash下的命令行处理方式. 选项与参数: 如下一个命令行: ./test.sh -f config.conf -v --prefix=/home 我们称-f为选项,它需要一个参数,即config.conf, -v 也是一个选项,但它不需要参数. --prefix我们称之为一个长选项,即选项本身多于一个字符