shell(九)读取控制台输入

102 阅读1分钟

在我们实际的编程中,一定会和用户有交互,那我们如何读取用户在控制台中输入的值呢?

Shell为我们提供了一个命令:read

对,你没看错,就是这么语义化,就是read。

 

他有一些参数:

-a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。

-p 后面跟提示信息,即在输入前打印提示信息。

-e 在输入的时候可以使用命令补全功能。

-n 后跟一个数字,定义输入文本的长度,很实用。

-r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。

-s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。

-t 后面跟秒数,定义输入字符的等待时间。

 

测试一下:

1:没有参数使用read

vim she.sh

在文件中键入以下内容:

#! /bin/bash
echo "请输入你想输入的字符串:"
read string
echo "你输入的字符串是:$string"

执行she.sh文件,输出:

[root@VM_0_4_centos test]# ./she.sh
请输入你想输入的字符串:
qwertyuiop
你输入的字符串是:qwertyuiop

 

2:使用参数-p/-t

使用if-else来编写一个测试的小程序把,执行程序等待10秒,未输入答案,直接退出程序。

代码如下所示:

在she.sh文件中键入如下的内容:

#! /bin/bash
if read -t 10 -p "请输入博客地址:" url
then
    echo "你的博客地址是:$url"
else
    echo "您输入超时了!"
fi

执行she.sh文件,如下所示:

[root@VM_0_4_centos test]# ./she.sh
请输入博客地址:guanchao.site
你的博客地址是:guanchao.site
[root@VM_0_4_centos test]# ./she.sh
请输入博客地址:您输入超时了!
[root@VM_0_4_centos test]#

 

以上大概就是linux系统shell编程中read命令的基本使用。

 

有好的建议,请在下方输入你的评论。