Shell中read命令的使用技巧

read命令的功能:
1.Linux read命令用于从标准输入读取数值。
2.read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。

read命令常用的选项:

选项 作用
-p 后面跟提示信息,即在输入前打印提示信息
-s 静默输入,在输入字符时不再屏幕上显示,一般都是用于输入密码
-n 后跟一个数字,指定输入的字符长度最大值
N 严格要求读满N个字符才自动结束读取,即使中途按下了回车或遇到了换行符也不结束。其中换行符或回车算一个字符。
-r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了
-d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志
-t 后面跟秒数,定义输入字符的等待时间n秒,超出n秒没有输入则自动退出

实例:
1.-p与-s选项的结合使用:

#!/bin/bash
read -s -p "输入密码:" pass   //在运行脚本时在屏幕上不显示输入
if [ "${pass}" == "abc" ];then
   echo  "输入密码正确"
fi

2.-t与-p选项的结合使用:

#!/bin/bash
read -t 5 -p "输入:" a //运行脚本后超过5秒没有输入,则自动退出脚本
if [ "$a" == "abc" ];then
   echo "输入正确"
else
   echo "输入不正确"
fi

如果给出输入时间限制,没完成输入,脚本自动退出,变量将赋值为空(如果在执行read前,变量已被赋值,则此变量在read超时后将被覆盖为空)

3.-n与-p选项的结合使用:

#!/bin/bash
read  -n1 -p "输入[Y/N]:" a //限制了只能输入一个字符,输入一个字符之后脚本马上执行下一步
case $a in
Y|y)
     echo "yes"
     ;;
N|n)
     echo "NO"
     ;;
*)
     echo "您的输入有误"
     ;;
esac

4.-d与-p选型的结合使用:

#!/bin/bash
read  -d '/' -p "输入:" a //这里指定的结束标志符为'/'不管输入多少个字符,只有输入了'/'脚本才执行下一步,
不然就算按回车也只能算是多一个字符,脚本并不会执行下一步
echo ""
echo $a

5.-r与-p选项的结合使用:
a.没使用-r选项之前:

#!/bin/bash
read -p "输入:" a
echo $a

运行脚本:
在这里插入图片描述
直接转义,相当于换行输入。
b.使用-r选项:

#!/bin/bash
read -r -p "输入:" a
echo $a

在这里插入图片描述
禁止"“的转义,结果连”"一起输出

6.读取文件,就我个人而言,一般用在while循环比较多
创建一个文件1.txt,里面内容格式为:
1
2
3
4

#!/bin/bash
sum=0
while read line  //读取1.txt文件的内容,做求和的动作
do
    sum=$[sum+${line}]
done < 1.txt
echo ${sum}

补充:
1.break:当判断条件成立后,break,循环到此结束,不会再给它赋值,跳出循环,但是没有退出脚本,break后面的脚本内容依然会执行。
2.continue:当判断条件满足后,continue会跳过下面的代码,直接进行新的赋值,执行上面的循环。
3.exit:当循环满足了判定条件后,exit直接就退出了脚本,不会再运行任何的脚本中的指令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章