第二章 从键盘或文件中获取标准输入:read命令

第二章 从键盘或文件中获取标准输入:read命令

read命令

从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。该命令可以一次读多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY

语法

read (选项) (参数)

选项:

​   -p    指定读取值时候的提示符

​   -t     指定读取值时候等待的时间(秒)

​   -a array    指定输如一个数组,赋值给array

​   -n 2        指定输入字符的任意类型的个数为2    

​   不加参数,默认赋值给变量:REPLY

参数:

​   变量 :指定读取值得变量名

查看变量值:

echo $变量名

printf $变量名

注意:使用echo或printf 输出变量值时,必须在变量名前加$,否则输出变量名。

实例

常用的read命令方式

  1. read name
    从标准输入读取内容  并赋值给变量name
    
    如:
    [root@ceshi ~]# read name
    abc
    [root@ceshi ~]# echo $abc
    123
    
    也可以写成脚本
    [root@ceshi ~]# vi shili.sh        
    #!/bin/bash
    read name
    echo "你输入的名字是:"$name
    
    运行:
    [root@ceshi ~]# /bin/bash shili.sh 
    小王
    你输入的名字是:小王
  2. read first second
    从标准输入读取内容,当遇到第一个空格(这里只能输入空格,输入回车程序就退出了) 将输入的第一个单词赋值给first;将剩下的赋值给second
    
    如:
    [root@ceshi ~]# vi shili.sh        
    #!/bin/bash
    read name age
    echo "你输入的名字是:"$name "你输入的年龄是:"$age
    
    运行:
    [root@ceshi ~]# /bin/bash shili.sh 
    小王 22 IT
    你输入的名字是:小王 你输入的年龄是:22 IT
  3. read
    从标准输入读取到的一行内容赋值给特定变量REPLY
    
    如:
    [root@ceshi ~]# vi shili2.sh
    #!/bin/bash
    read
    echo $REPLY
    
    [root@ceshi ~]# /bin/bash shili2.sh 
    小王 22 it
    小王 22 it
  4. read -a arrayname
    把单词清单读入arrayname的数组里
    
    如:
    [root@ceshi ~]# read -a info
    小王 22 IT
    [root@ceshi ~]# echo "你的名字是${info[0]},你的年龄是${info[1]},你的行业是${info[2]}"
    你的名字是小王,你的年龄是22,你的行业是IT

  5. read -p "text"
    打印提示text,等待输入,并将输入内容赋值给REPLY中。
    
    如:
    [root@ceshi ~]# read -p "输入密码"
    输入密码abc123
    [root@ceshi ~]# echo $REPLY
    abc123
    
    补充:输入密码,不让密码显示出来
    方法一:
    [root@ceshi ~]# read -p "输入密码" -s pwd
    输入密码 
    [root@ceshi ~]# echo $pwd         
    abc123
    -s :代表不显示终端输入内容
    
    方法二:
    [root@ceshi ~]# vi mima.sh        
    #!/bin/bash
    stty -echo       # -echo 表示禁止将输出发送到终端
    read -p "输入密码:" pwd
    stty echo    # echo 则允许发送输出
    echo     
    echo $pwd
    echo 输入完毕
    
    [root@ceshi ~]# /bin/bash mima.sh 
    输入密码:
    abc123456
    输入完毕

  6. read -r line
    允许输入包含反斜杠
    
    [root@ceshi ~]# read -r line
    abc\abc
    [root@ceshi ~]# echo $line
    abc\abc

  7. read -t 3
    指定读取等待时间为3秒

  8. read -n 2 var
    从输入中读取两个字符并存入变量var,不需要按回车读取。
    
    如:
    [root@ceshi ~]# read -n 2 var
    你好       # 当输完你好,够了两个字符,程序就自动结束了
    
    [root@ceshi ~]# echo $var
    你好

  9. read -d ":" var
    用 定界符 冒号 结束输入行(也就是说冒号 就等于回车)
    
    如:
    [root@ceshi ~]# read -d ":" var
    abc:
    [root@ceshi ~]# read -d ":" var2
    123:
    
    [root@ceshi ~]# echo $var
    abc
    [root@ceshi ~]# echo $var2
    123
    
    当然也可以设置别的结束符
    [root@ceshi ~]# read -d "r" var3
    456r
    [root@ceshi ~]# echo $var3
    456

转载于:https://blog.51cto.com/506554897/2114407

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值