Linux 中读取命令的 5 个实例

Linux中的读命令是什么?

Linux中的读取命令 是用户与从键盘获取的输入进行交互的一种方式,您可能会看到它被称为 标准输入 (标准输入)或其他类似的描述。

换句话说,如果你想要你的 bash 脚本从用户那里获取输入,你必须使用 read 命令。

我要写一些简单的 bash 脚本向您展示 read 命令的实际用法。

阅读命令示例

开始使用 read 命令可能会令人困惑,尤其是对于那些不熟悉 shell 脚本的人。 我将在此处使用的脚本非常易于理解并且应该易于遵循,尤其是在您按照教程进行练习时。

基本编程概念

对于几乎每个程序或脚本,您都希望从用户那里获取信息(输入)并告诉计算机如何处理该信息(输出)。

当您使用 read 时,您正在与 bash 要捕获用户输入的终端。 默认情况下,该命令将创建一个变量来保存该输入。

read [options] variable_name

现在让我们看一些读取命令的示例,以了解如何在不同情况下使用它。

1. 不带选项的读取命令

当您在没有任何其他选项的情况下键入 read 时,您需要按 Enter 键开始捕获。 系统将捕获输入,直到您再次按 Enter 键。

默认情况下,此信息将存储在名为 $REPLY.

为了让事情更容易理解 example,我将使用 符号将在按下回车键时显示。

read ↵
hello world ↵
echo $REPLY ↵
hello world

更多关于变量

正如我之前提到的, $REPLY 变量内置于 read,所以你不必声明它。

如果您只考虑一个应用程序,那可能会很好,但您很可能希望使用自己的变量。 当您使用 read 声明变量时,除了键入变量的名称外,您无需执行任何操作。

当你想调用变量时,你将使用 $ 在名字前面。 这是一个 example 我在哪里创建变量 Linux_Handbook 并为其分配输入的值。

您可以使用 echo 命令来验证 read 命令是否发挥了作用:

read Linux_Handbook ↵
for easy to follow Linux tutorials.
echo $Linux_Handbook ↵
for easy to follow Linux tutorials.

提醒:变量名区分大小写。

2.提示选项 -p

如果您正在编写脚本并且想要捕获用户输入,则可以使用读取选项来创建可以简化代码的提示。 编码就是效率,对吧?

您可以简单地使用 -p 选项标志。 您在引号中键入的文本将按预期显示,用户无需按 Enter 即可开始捕获输入。

所以不要像这样写两行代码:

echo "What is your desired username? "
read username

您可以使用 -p 带有如下读取命令的选项:

read -p "What is your desired username? " username

输入将保存到变量 $username。

3.“秘密”/静音选项 -s

我写了一个简单的 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 中使用 read 命令来创建自己的数组。 这意味着我们可以将输入块分配给数组中的元素。 默认情况下,空格键将分隔元素。

[email protected]:~$ read -a array
abc def 123 x y z
[email protected]:~$ echo  ${array[@]}
abc def 123 x y z
[email protected]:~$ echo  ${array[@]:0:3}
abc def 123
[email protected]:~$ echo  ${array[0]}
abc
[email protected]:~$ echo  ${array[5]}
z

如果您不熟悉数组,或者了解它们是如何使用的 bash 第一次,我将分解正在发生的事情。

  • Enter 所需的元素,用空格分隔。
  • 如果我们只放置 @ 变量,它将迭代并打印整个循环。
  • @ 符号代表元素编号,后面有冒号,我们可以告诉从索引 0 到索引 3 的迭代(如此处所写)。
  • 打印索引 0 处的元素。
  • 与上面类似,但演示元素是由空格分隔的

额外提示:添加超时功能

您还可以为我们的读取添加超时。 如果在分配的时间内没有捕获任何输入,则程序将继续或结束。

[email protected]:~$ read -t 3
[email protected]:~$

看输出可能不明显,但终端在超时和结束读取程序之前等待了三秒钟。

结论

我希望本教程对您开始使用 Linux 中的读取命令有所帮助。 与往常一样,我们很乐意听取读者关于他们感兴趣的内容的意见。请在下方发表评论并与我们分享您的想法!