Shell read 键盘输入并复制给变量

  • 使用格式

    $ read [-p "提示信息"] 变量名
    

    -p:提示信息。

    -t:指定超时秒数。

    -s:设置是否在终端显示输入的内容,设置则为不显示,默认显示。

    -a:将分隔后的字段依次存储到 -a 指定的数组中,存储的起始位置从数组的 index=0 开始。

    -d:指定读取行的结束符号,默认结束符号为换行符。

    -n:限制输入 n 个字符就自动结束输入,如果没有输入满 n 个字符就按下回车或遇到换行符,则也会结束读取。

    -N:限制输入 N 个字符就自动结束输入,如果没有输入满 N 个字符就按下回车或遇到结束符,不会结束 read 输入,此时的结束符算一个字符。

    -r:禁止反斜线的转义功能,这意味着 \ 会变成文本的一部分。

    上面配置项没有先后顺序,谁前谁后都行。

  • 举例

    # 没有指定接受变量,直接输入名称,没有指定变量默认会存储到 $REPLY 全局属性中
    $ read
    $ echo $REPLY
    
    # 指定接收变量,直接输入名称
    $ read name
    $ echo $name
    
    # 使用 -p 有提示信息
    $ read -p "请输入名称:" name
    $ echo $name
    
    # 使用 -s 有提示信息,输入不可见
    $ read -s -p "请输入名称:" name
    $ read -p "请输入名称:" -s name
    $ echo $name
    
    # 使用 -t 必须在 3 秒内完成输入,否则 read 自动退出
    $ read -t 3 name
    $ echo $name
    
    # 使用 -a 将输入的数据进行空格分隔成数组,并存储到 $arr
    $ read -a arr
    11 22 33 44
    # 默认输出数组 0 位置
    $ echo $arr
    11
    # 输出全部
    $ echo ${arr[@]}
    11 22 33 44
    $ echo ${arr[0]}
    11
    $ echo ${arr[1]}
    22
    
    # 使用 -d 设置 / 为结束符,而不是回车键位结束输入
    $ read -d '/'
    123
    123
    123/
    $ echo $REPLY
    123 123 123
    
    # 使用 -n 设置输入长度为 5,输入到 5 位字符时自动结束输入
    $ read -n 5
    12345
    $ echo $REPLY
    12345
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡尔特斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值