read命令还可以这样用!

  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)#(注:<和(之间没有空格)

猜你喜欢

转载自www.cnblogs.com/hana-alice/p/9238327.html