1、shell中read及各项含义

-a:将键入的内容读到 某自定义变量中(或者说数组中)

vi read.sh

#!/bin/bash
read -a array
echo ${array}

sdbadmin@iZ25sdqd375Z:~/sh> sh read.sh
5 5
5

这里我键入了俩个值,但是只显示一个,之后又进行了尝试

#!/bin/bash
read -a aa
echo ${aa}
echo ${aa[1]}

sdbadmin@iZ25sdqd375Z:~/sh> sh read.sh 
5 9 7
5
9

说明还是可以键入多个值保存到数组的

-d:表示delimiter,即定界符,一般情况下是以IFS为参数的间隔,但是通过-d,我们可以定义一直读到出现执行的字符位置。例如read –d madfds value,读到有m的字符的时候就不在继续向后读,例如输入为 hello m,有效值为“hello”,请注意m前面的空格等会被删除。这种方式可以输入多个字符串,例如定义“.”作为结符号等等

eg:

sdbadmin@iZ25sdqd375Z:~/sh> read -d o
as fd gf osdbadmin@iZ25sdqd375Z:~/sh>

当我键入o 时,不能键入任何值了

-e: :只用于互相交互的脚本,它将readline用于收集输入行。

sdbadmin@iZ25sdqd375Z:~/sh> read -e aa;echo $aa
dsas dfg
dsas dfg

-n :用于限定最多可以有多少字符可以作为有效读入

q sdbadmin@iZ25sdqd375Z:~/sh> read -n 3
ad

键入第三个字符停止,空格也算一个字符

-p :用于给出提示符

adfsdbadmin@iZ25sdqd375Z:~/sh> read -p as
as

键入as 回车显示as

-r :在参数输入中,我们可以使用’/’表示没有输入完,换行继续输入,如果我们需要行最后的’/’作为有效的字符,可以通过-r来进行。

-s :对于一些特殊的符号,例如箭头号,不将他们在terminal上打印,例如read –s key,我们按光标,在回车之后,如果我们要求显示,即echo,光标向上,如果不使用-s,在输入的时候,输入处显示^[[A,即在terminal上 打印,之后如果要求echo,光标会上移。可以用来隐藏passwd等

-t :用于表示等待输入的时间,单位为秒,等待时间超过,将继续执行后面的脚本,注意不作为null输入,参数将保留原有的值

sdbadmin@iZ25sdqd375Z:~/sh> read -t 3;echo "1"
1

回车后等待3秒,显示1

a. 拼接文件
#将afile文件中的前三行与bfile中的前四行拼接在一起
while read -u3 i && read -u4 j;do
echo $i $j
done 3<afile 4<bfile

b. 输入不在终端显示
read -p "Input passwd:" -s Passwd
echo $Passwd

c. 限时输入,否则退出
#延迟五秒,没有输入将自动退出
read -p "Input a number:" -t 5 Number

d. 读取限定字符
#从输入中取5个字符
read -p "Input a word:" -n 5 Word

e. 等待输出q退出

#输入,直到输入q,将自动退出
read -dp -p "Input some words end with q:" word