ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2022-05-25 10:32:41  阅读:146  来源: 互联网

标签:Shell 变量 read 18 30 键盘输入 echo 输入 name


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

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

这样的情况非常的不友好,可以用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

# 执行结果如下图:

image

赋值流程,如下图:

image

综合练习:

# 定义一个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"

标签:Shell,变量,read,18,30,键盘输入,echo,输入,name
来源: https://www.cnblogs.com/liuyuelinfighting/p/16308383.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有