4.3.3 默读与文件读取
有时候需要脚本用户进行输入,但不希望输入的数据显示在显示器上。-s选项能够使read命令中输入的数据不显示在监视器上(实际上,数据是显示的,只是read命令将文本颜色设置成了与背景相同的颜色)。
read命令还可以读取Linux相同上存储在文件中的数据。每调用一次read命令,都会读取文件中的一行文本。当文件中没有可读的行时,read命令将以非零状态退出。读取文件的关键是如何将文件中的数据传送给read命令。最常用的方法是对文件使用cat命令并通过管道将结果直接传给包含read命令的while命令。
默读与文件读取操作实例如下:
#!/bin/bash
#默读与文件读取
cunt=1
read -p "用户名:" username
read -s -p "用户密码:" pass
while [ $cunt -eq 1 ]
do
if [ $pass = "ewang123" ]
then
echo -e "\n$username登录成功.....\n"
if read -t 20 -p "对两个操作数求和:" one two
then
#把操作数与零求和
#1>/dev/null表示标准输出重定向到空设备文件,也就是不输出任何信息到终端
expr ${one} + 0 1>/dev/null 2>&1
#如果上一条名执行成功,$?的状态位0,说明操作数是数字
if [ $? -eq 0 ]
then
expr ${two} + 0 1>/dev/null 2>&1
if [ $? -eq 0 ]
then
echo "$one+$two=$[ $one + $two ]"
else
echo "$one+$two="$one" $two"
fi
else
echo "$one+$two="$one" $two"
fi
else
echo -e "\n输入超时!\n"
continue
fi
else
echo "密码输入错误!"
num=1
#显示Demo45的前3行信息,并对读取这些信息
head -n 3 Demo45 | while read line
do
echo "Line #$num:$line"
num=$[ $num+1 ]
done
break
fi
done