首页 > 编程笔记 > Linux命令 阅读:6

Shell read命令:从标准输入读取数据

read 命令是 Bash Shell 的内置命令,专门用来从标准输入中读取数据并赋值给变量。如果没有进行重定向,默认就是从键盘中读取用户输入的数据;如果进行了重定向,那么可以从文件中读取数据。

read 命令一般是用来与用户进行互动的。read 命令的语法格式如下:
read [options] [variables]
其中,options 表示选项,常用的选项见下表所示;variables 表示用来存储输入数据的变量,可以有一个,也可以存在多个变量,多个变量之间用空格隔开。

表:read命令常用的选项
常用选项 说明
-p prompt 显示提示信息,提示内容为 prompt
-a array 把读取的数据赋值给数组 array,从下标 0 开始
-d delimiter 用字符串 delimiter 指定读取结束的位置,而不是一个换行符(读取到的数据不包括 delimiter)
-e 在获取用户输入的时候,对功能键进行编码转换(不会直接显示功能键对应的字符)
-n num 读取输入的 num 个字符
-r 原样读取模式(Raw mode),不把反斜杠字符解释为转义字符
-s 静默模式(Silent mode),不会在屏幕上显示输入的字符。当输入密码和其他确认信息时,这是很有必要的
-t seconds 设置超时时间,单位为秒。如果用户没有在指定时间内完成输入,将会返回一个非 0 的退出状态,表示读取失败
-u fd 使用文件描述符 fd 作为输入源(而不是标准输入),类似于重定向

【实例】执行 Shell 脚本,让用户输入姓名、年龄和成绩。
[root@linux opt]# vim demo22.sh
#!/bin/bash
read -p "请输入姓名、年龄及成绩,用空格隔开:" name age achievement
echo "姓名:$name"
echo "年龄:$age"
echo "成绩:$achievement"

[root@linux opt]# bash demo22.sh    #执行此脚本
请输入姓名、年龄及成绩,用空格隔开:小孙 18 99
姓名:小孙
年龄:18
成绩:99

只读取用户输入的第一个字符:
[root@linux opt]# vim demo23.sh
#!/bin/bash
read -n 1 -p "Enter a char :" char
printf "\n" #换行 echo $char

[root@linux opt]# bash demo23.sh
Enter a char :9
9
[root@linux opt]# bash demo23.sh
Enter a char :g
g
[root@linux opt]# bash demo23.sh
Enter a char :T
T

相关文章