从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。该命令可以一次读多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY
read (选项) (参数)
选项:
? -p 指定读取值时候的提示符
? -t 指定读取值时候等待的时间(秒)
参数:
? 变量 :指定读取值得变量名
查看变量值:
echo $变量名
printf $变量名
注意:使用echo或printf 输出变量值时,必须在变量名前加$,否则输出变量名。
常用的read命令方式
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
小王
你输入的名字是:小王
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
read
从标准输入读取到的一行内容赋值给特定变量REPLY
如:
[root@ceshi ~]# vi shili2.sh
#!/bin/bash
read
echo $REPLY
[root@ceshi ~]# /bin/bash shili2.sh
小王 22 it
小王 22 it
read -a arrayname
把单词清单读入arrayname的数组里
如:
[root@ceshi ~]# read -a info
小王 22 IT
[root@ceshi ~]# echo "你的名字是${info[0]},你的年龄是${info[1]},你的行业是${info[2]}"
你的名字是小王,你的年龄是22,你的行业是IT
?
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
输入完毕
?
read -r line
允许输入包含反斜杠
[root@ceshi ~]# read -r line
abc\abc
[root@ceshi ~]# echo $line
abc\abc
?
read -t 3
指定读取等待时间为3秒
?
read -n 2 var
从输入中读取两个字符并存入变量var,不需要按回车读取。
如:
[root@ceshi ~]# read -n 2 var
你好 # 当输完你好,够了两个字符,程序就自动结束了
[root@ceshi ~]# echo $var
你好
?
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
?
原文地址:http://blog.51cto.com/506554897/2114407