您的位置:首页 > 运维架构 > Shell

『忘了再学』Shell基础 — 18、接收键盘输入的数据

2022-05-25 10:27 1771 查看

我们之前讲过位置参数变量是用来向脚本中传递值的。

而我们在说明位置参数变量的时候,也说过位置参数变量的缺点,在执行脚本的时候,是没有给脚本所需要参数的提示。

这样的情况非常的不友好,可以用

read
命令来解决,
read
命令是用来接收键盘输入的命令,并提示相关输入说明。

read
命令格式如下:

[root@localhost ~]# read [选项] [变量名]

选项:
-p:“提示信息”:在等待read输入时,输出提示信息。
-t:秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间。
-n:字符数:read命令只接受指定的字符数,就会执行。
-s:隐藏输入的数据,适用于机密信息的输入。

变量名:
变量名可以自定义,如果不指定变量名,会把输入保存入默认变量REPLY。
如果只提供了一个变量名,则整个输入行赋予该变量。
如果提供了一个以上的变量名,则输入行分为若干字,一个接一个地赋予各个变量,而命令行上的最后一个变量取得剩余的所有字。

示例:

# 定义一个shell脚本count.sh,计算两个数的和。
[root@Lyl tmp]# vim count.sh

# 脚本内容如下:

#!/bin/bash

# read -t 30 是等待30秒,然后继续执行。
read -t 30 -p "please input a num1:" num1
read -t 30 -p "please input a num2:" num2

sum=$(( $num1 + $num2 ))
echo $sum

# 执行该脚本
[root@Lyl tmp]# chmod 755 count.sh
[root@Lyl tmp]# ./count.sh

# 执行结果如下图:

赋值流程,如下图:

综合练习:

# 定义一个shell脚本read.sh。
[root@Lyl tmp]# vim read.sh

# 脚本内容如下:

#!/bin/bash

# 例1
# 提示“请输入姓名”并等待30秒,把用户的输入保存入变量name中
read -t 30 -p "Please input your name:" name

# 查看变量“$name”中是否保存了你输入的name
echo "Name is $name"

# 例2
# 提示“请输入年龄”并等待30秒,把用户的输入保存入变量age中。
# 年龄是隐私,所以我们用“-s”选项隐藏输入。
read -s -t 30 -p "Please enter your age:" age

# 调整输出格式,换行。
echo -e "\n"
# 查看上边输入的年龄。
echo "Age is $age"

# 例3
# 提示“请选择性别”并等待30秒,把用户的输入保存入变量gender。
# 使用“-n 1”选项,表示只接收一个输入字符就会执行(都不用输入回车,自动就结束输入了。)
# 如下的提示:gender[M/F]
read -n 1 -t 30 -p "Please select your gender[M/F]:" gender

# 调整输出格式,换行。
echo -e "\n"
# 查看上边输入的性别。
echo "Sex is $gender"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐