Shell read命令:从标准输入读取数据
read 命令是 Bash Shell 的内置命令,专门用来从标准输入中读取数据并赋值给变量。如果没有进行重定向,默认就是从键盘中读取用户输入的数据;如果进行了重定向,那么可以从文件中读取数据。
read 命令一般是用来与用户进行互动的。read 命令的语法格式如下:
【实例】执行 Shell 脚本,让用户输入姓名、年龄和成绩。
只读取用户输入的第一个字符:
read 命令一般是用来与用户进行互动的。read 命令的语法格式如下:
read [options] [variables]其中,options 表示选项,常用的选项见下表所示;variables 表示用来存储输入数据的变量,可以有一个,也可以存在多个变量,多个变量之间用空格隔开。
常用选项 | 说明 |
---|---|
-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