直到用户输入匹配变量为止

2024-04-20

好的,所以我正在尝试创建一个用户名/密码登录脚本。 (可能不是我仍在研究的最安全的想法);)

我的脚本将加载变量以与这样的文件进行比较。 (现在我只是在研究密码部分)

./path/to/variables.conf

该文件将包含一个名为的变量

PASS=SOME_VALUE 

我打算使用 read 来获取要比较的变量

read -p "Enter your password:" CPASS; 

现在我缺少的部分(我设想它是如何工作的)

while "$CPASS" doesn't match "$PASS" do 
read -p "Wrong password, try again:" CPASS;

谢谢您并感谢任何帮助。


这应该可以做到。您只需[ ]大括号和!=运算符至在 bash 中比较字符串 http://www.gnu.org/software/bash/manual/bashref.html#Bash-Conditional-Expressions:

PASS=SOME_VALUE

read -p "Enter your password:" CPASS

while [ "$CPASS" != "$PASS" ]; do 
    read -p "Wrong password, try again:" CPASS
done

另请注意,强烈建议通过-s要读取的参数,以便输入的密码不会回显给用户。来自read的部分man bash:

          -s     Silent  mode.  If input is coming from a terminal, char-
                 acters are not echoed.

请注意,当用户按 ENTER 键时,也不会向用户回显换行符,因此您必须在每次之后手动插入换行符read以便行的格式正确。因此,您可能应该用这样的内容替换您的读取语句:

read -s -p "Enter your password:" CPASS
echo
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

直到用户输入匹配变量为止 的相关文章

随机推荐

  • 如何使用 pyinstaller 制作 vpython.exe

    我有一个使用 vpython 的简单脚本 只是测试 我想使用 pyinstaller 创建一个 exe 文件 这是脚本 from visual import box 然后我在控制台中运行 pyinstaller sss py 但 exe 不
  • 从命令提示符运行脚本时,PiCamera 无法初始化为类成员

    在我的 Raspberry Pi 上 我遇到了有关使用 PiCamera 模块的奇怪行为 当从 IDLE F5 或从命令提示符 python test py 启动时 以下代码可以顺利运行 import picamera if name ma
  • 跨进程共享多处理同步原语

    Python 3 4 Linux 我有一个主进程 P 它分叉 8 个进程 C1 到 C8 我想创建multiprocessing Barrier确保所有 8 个子进程在某个时刻保持同步 如果我在父进程中定义同步原语 那么一切都会正常工作 这
  • 将数据加载到 R 的最佳文件类型(速度方面)?

    我正在运行一些分析 得到了很多 2 3G 之间的数据集 现在 我将其另存为 RData文件类型 然后 稍后我加载这些文件以继续工作 这需要一些时间来加载 我的问题是 保存然后加载这些文件为 csv 会更快吗 是data table读取 cs
  • 如何从VBA写入单元格

    即使对于 VBA 新手来说 这似乎也是一个愚蠢的问题 但我不知道如何写入 VBA 中的单元格 我在 Module1 中有一个函数 如下所示 Function Foo bar As Boolean Range A1 Value 1 Foo E
  • 工具栏不适用于使用 appcompat v7 的棒棒糖之前的设备

    我正在使用材质 appcompat v7 为工具栏和菜单抽屉编写简单的代码 一切在 Nexus 5 上与棒棒糖完美配合 但在棒棒糖之前的版本 4 1 或 4 4 中设备会崩溃 问题在于定义风格 如果有人能告诉我问题出在哪里 我就把我的代码贴
  • 带有 SimpleCursorAdapter 的 NullPointerException

    尝试使用自定义适配器设置 gridview 我获取光标并在 ASyncTask 中设置适配器 这是我的全部代码 private class getAllData extends AsyncTask
  • 无法识别启动活动:未找到默认活动

    我是android新手 遇到了一个问题 控制台显示 无法识别启动活动 未找到默认活动 我已经添加了
  • FREEMARKER:避免转义 HTML 字符

    freemarker 输出有问题 assign optionsHTML list data as item assign optionsHTML optionsHTML
  • Cassandra 3.11.3和cqlsh不支持python 3.6和3.7? [复制]

    这个问题在这里已经有答案了 我已经安装了Python 3 6 或 3 7 with 卡桑德拉 3 11 3 但不支持cqlsh 它只支持Python 2 7版本 这是错误消息 apache cassandra 3 11 3 bin cqls
  • Typescript - 无法调用类型缺少签名的表达式

    我对打字稿很陌生 当我尝试在打字稿中像这样调用这个 javascript 时 window location http localhost 1773 Repository NetworkPlan ExportPng 我收到这样的编译器错误消
  • 如何使用 .htaccess 提供 gzip 压缩字体? (没有 mod gzip 或 deflate)

    以下是我按随机顺序尝试过的内容列表 AddHandler application x httpd php otf AddType default mimetype auto prepend file otf php zlib output
  • 对 Java 集合进行排序和分组

    我有一个有名称和分数的对象 我想对此类对象的集合进行排序 以便它们按名称分组并按每组中的最大分数排序 并且在组内也按降序分数排序 让我展示一下我想要实现的目标 假设我有这些对象 名称 分数 a 3 a 9 b 7 b 10 c 8 c 3
  • Spark 使用前一行的值向数据帧添加新列

    我想知道如何在 Spark Pyspark 中实现以下目标 初始数据框 id num 4 9 0 3 7 0 2 3 0 1 5 0 结果数据框 id num new Col 4 9 0 7 0 3 7 0 3 0 2 3 0 5 0 我通
  • 可加载组件:异步加载组件失败

    我创建了模块 A 它是我的 React 应用程序的组件库 我计划在模块 B 上使用它 这是我实际的 React 应用程序 我有一个 index js 通过以下方式使用可加载组件从模块 A 导出我的组件 import loadable fro
  • ComboBoxModel 事件不起作用

    我似乎不理解事件等概念 在阅读了有关如何实现侦听器等内容的一段时间后 我发现 Java 教程说我应该扩展AbstractListModel触发数据事件 由于某种原因它仍然不起作用 我做错了什么吗 以及预计会出现什么样的代码addListDa
  • C++中如何处理bad_alloc?

    有一种方法叫做foo有时会返回以下错误 terminate called after throwing an instance of std bad alloc what std bad alloc Abort 有没有一种方法可以让我使用t
  • 将 mogenerator 集成到 Xcode 4 中

    在我的应用程序中 我使用核心数据来实现持久数据保存 因为我已经看到 mogenerator 提供了一种很好的方法来创建和维护NSManagedObject子类 也具有附加功能 我正在寻找一些在 Xcode 4 中集成 monogenerat
  • 如何将 CSS 应用到 Mac Chrome 选择框?

    无论我做什么 使用 Mac OSX 10 9 2 和 Chrome 版本 33 0 1750 152 padding background color 没有任何效果 我真的只是想申请一个padding top and padding bot
  • 直到用户输入匹配变量为止

    好的 所以我正在尝试创建一个用户名 密码登录脚本 可能不是我仍在研究的最安全的想法 我的脚本将加载变量以与这样的文件进行比较 现在我只是在研究密码部分 path to variables conf 该文件将包含一个名为的变量 PASS SO