Linux中read命令示例
Linux中的read命令是什么?
Linux中的read命令是用户与键盘所采取的输入交互的方式,我们可能会看到称为STDIN(标准输入)或者其他类似说明。
换句话说,如果我们希望Bash脚本从用户输入输入,则必须使用读命令。
read命令示例
read命令可能会令人困惑地开始使用,特别是对于那些新的shell脚本的人。
使用几乎每个程序或者脚本,我们希望从用户(输入)中获取信息,并告诉计算机如何处理该信息(输出)。
使用读取时,我们将传送到要捕获用户输入的BASH终端。
默认情况下,命令将创建一个变量以保存该输入。
read [options] variable_name
现在让我们看看read命令的一些示例,以了解如何在不同情况下使用它。
1.不带选项的read命令
在没有任何其他选项的情况下键入读取时,我们需要按Enter开始捕获。
系统将捕获输入,直到再次点击输入。
默认情况下,此信息将存储在名为"$Reply"的变量中。
要使事情更容易遵循第一个示例,我将使用""符号显示在按下ENTER键时显示。
read hello world echo $REPLY hello world
正如我之前提到的那样,"$REPLY"变量建立在"读取"中,因此我们不必声明它。
如果我们只有一个应用程序,那可能没问题,但可能很可能我们想要使用自己的变量。
当我们使用读取声明变量时,我们无需键入键入变量的名称以外的任何操作。
当我们想调用变量时,我们将在名称前使用$
。
这是我创建变量linux_tut
的一个例子,并将其分配输入的值。
我们可以使用echo命令验证读取命令是否有效:
read linux_tut for easy to follow Linux tutorials. echo $linux_tut for easy to follow Linux tutorials.
2.提示选项-p
如果我们正在编写脚本并且我们想要捕获用户输入,则存在一个读取的选项来创建可以简化代码的提示。
编码是关于效率的,对吧?
我们可以简单地使用"-P"选项标志,而不是使用其他行和echo命令。
我们输入引号的文本将按预期显示,用户不需要点击以开始捕获输入。
因此,而不是写这样的代码:
echo "What is your desired username? " read username
我们可以使用如下所示的读命令使用-p
选项:
read -p "What is your desired username? " username
输入将保存到变量$username。
3."秘密"/沉默选项"-s"
我写了一个simpe bash脚本来演示下一个标志。
首先看一下输出。
bash secret.sh What is your desired username? tuxy_boy Your username will be tuxy_boy. Please enter the password you would like to use: You entered Pass123 for your password. Masking what's entered does not obscure the data in anyway.
这是'secret.sh'的内容,如果我们想重新创建它。
#!/bin/bash read -p "What is your desired username? " username echo "Your username will be" $username"." read -s -p "Please enter the password you would like to use: " password echo echo "You entered" $password "for your password." echo "Masking what's entered does not obscure the data in anyway."
正如我们所看到的,"-s""选项在输入密码时屏蔽了输入。
但是,这是一种肤浅的技术,并没有提供真正的安全性。
4.使用具有读取选项-n
的字符限制
我们可以向输入添加约束,并将其限制为长度的n个字符。
让我们从前使用相同的脚本,但修改它,以便输入输入限制为5个字符。
read -n 5 -p "What is your desired username? " username
只需添加-n n
,其中n是我们选择的数量。
我为密码做了同样的事情。
bash secret.sh What is your desired username? tuxy_Your username will be tuxy_. Please enter the password you would like to use: You entered boy for your password.
正如我们可以看到程序在用户名的5个字符后停止收集输入。
但是,只要我在输入后击中""",我仍然可以写小于5个字符。
如果要限制该修改,则可以使用"-n"(而不是-n)此修改使其能够恰好需要5个字符,既不少,也不是更多。
5.将信息存储在数组-a
中
我们还可以使用Linux中的读命令来创建自己的数组。
这意味着我们可以将输入的块分配给数组中的元素。
默认情况下,空格密钥将分隔元素。
Hyman@theitroad:~$read -a array abc def 123 x y z Hyman@theitroad:~$echo ${array[@]} abc def 123 x y z Hyman@theitroad:~$echo ${array[@]:0:3} abc def 123 Hyman@theitroad:~$echo ${array[0]} abc Hyman@theitroad:~$echo ${array[5]} z
如果你是阵阵的新手,或者看到第一次抨击时,我会分解发生的事情。
- 输入所需的元素,用空格分隔。
- 如果我们只放了@变量,它将迭代并打印整个循环。
- @符号表示元素编号和冒号之后,我们可以告诉迭代从索引0到索引3(如这里所写)。
- 在索引0上打印元素。
- 与上述类似,但表明这些元素被空间分开了
添加超时功能
我们还可以添加超时到我们的阅读。
如果在规定的时间内没有捕获输入,则程序将继续或者结束。
Hyman@theitroad:~$read -t 3 Hyman@theitroad:~$
看起来可能并不明显看输出,但终端在定时并结束读取程序之前等了三秒钟。