shell下的read命令的作用是从标准流中读取输入,并把读取的内容放到某个变量中。
1.-t参数给用户的输入做限时规定
2.参数-n规定read后面的变量所接收的字符个数。只要在shell界面输入到-n所规定的字符数之后,shell变量立即被赋值。若是没有得到所规定的字符数,shell界面给予等待。
3.-s选项能够使read命令中输入的数据不显示在监视器上(实际上,数据是显示的,只是read命令将文本颜色设置成与背景相同的颜色)。
4.cat test | while read line
5.数组创建
read -a array 将内容读入到数组中
String="just a test"
read -r -a Array <<<"$String"(转义'\',若不转义\,\可用于多行输入)
#read var
Enter your number:123\
456\
789\
0
echo $var #1234567890
echo ${Array[@]}
6.检测方向键
read命令的-n选项也可以检测方向键, 和一些控制按键.
#!/bin/bash arrowup='\[A' arrowdown='\[B' arrowrt='\[C' arrowleft='\[D' insert='\[2' delete='\[3' read -n3 key if echo -n "$key" | grep "$arrowup" then echo "Up-arrow key pressed." exit 0 else echo "------Other key" fi
7.read的默认变量为:$REPLY
故一个不带变量参数的read命令, 将会把来自键盘的输入存入到专用变量$REPLY中
8.通过文件重定向来使用read命令
read arg1 < filename
arg1赋值为filename的第一行(以换行符为分隔符)
read arg1 arg2 < filename
以空白分割字符串
若被赋予变量的个数大于filename的行字符串个数则多余的变量会被赋予null
若被赋予变量的个数小于filename的行字符串个数则最后一个变量将会取得该行剩余的全部部分
9.while和read
command | while read arg
do
....
done
以上部分相当于创建了一个子shell,故变量不会传递
while read arg
do
....
done < filename或<(command)#(注:<和(之间没有空格)