十、read 命令读取数据,并赋值给变量

read 命令

从标准输入或文件中读取一行数据,并将其拆分后赋值给一个或多个变量。它是编写交互式脚本、处理文本行时的核心工具。

语法:

read [选项] [变量名...]
  • 如果不指定变量,默认将整行读入内置变量 REPLY
  • 一次读取多个变量(按空白分隔)
  • 输入可以来自键盘(交互)、管道、重定向文件等。

参数说明:

选项作用
-r 禁止反斜杠转义(强烈推荐使用),防止反斜杠 \ 被解释为转义字符。
-p prompt 设置提示信息,在输入前打印提示信息。
-s 静默模式(输入不回显,用于密码),在输入字符时不再屏幕上显示,例如login时输入密码。
-t timeout 设置超时秒数,在指定秒数内未输入,则命令返回非零状态码。自动退出
-n num 限制输入字符数,读取指定数量的字符后,按任意键(无需回车)即继续。
-d delim 指定结束分隔符(默认是换行符 \n),可以使用其他字符。
-a array 读取为数组,将输入内容按分隔符分割为数组元素。
  • -e 在输入的时候可以使用命令补全功能。
  • -u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。

例1:

#!/bin/bash
#判断用户输入
read -p "Please choose name: " -t 10 name
#在屏幕上输出"请选择人名",然后把用户选择赋予变量c
case $name in
 '小明')
   echo "Please choose name:" $name
      ;;
 'wq')
 echo "结束了"
;;
esac


[root@localhost ~]# ./1.sh
./1.sh:行1: [root@localhost: 未找到命令
Please choose name: 小明
Please choose name: 小明
[root@localhost ~]# ./1.sh
./1.sh:行1: [root@localhost: 未找到命令
Please choose name: wq
结束了

 "-p"选项默认不带换行功能,且也不支持"\n"换行。

 

posted @ 2025-11-18 09:11  chao_xiong  阅读(5)  评论(0)    收藏  举报