【问题标题】:In bash script how do I reference a file as the input for an interactive prompt [duplicate]在 bash 脚本中,我如何引用文件作为交互式提示的输入 [重复]
【发布时间】:2021-09-19 03:11:46
【问题描述】:

这里绝对是初学者。

我在一个名为“pw.prn”的文件中有一个密码列表。

Welcome99
ABCDEFGH
12545678
lakers2021
gododgers

我希望针对散列程序 (mkpasswd -m sha-512) 运行文件中的每一行,并将密码与分号连接起来,然后将散列过程的结果输出到新文件:

所以输出应该是这样的:

Welcome99:$6$xDb6xNDzqtnwzVLz$LMA3CNodueIyZavW3CIGDdcl19cekNNG8EB5Hc/vMzZGUSRhbueNCkYRlyaGKAb/VjW0cBiCHdJLt4iL08gBn/
ABCDEFGH:$6$mANzCeK.SUgSD$ID/E6NYPp4cddHCevI.yua3HotbA/a7fZ7xjSk7dUI6fayuTMsO9SCdSA7MFcgh8SUcmNqrqqE4IxAoIEcmFb0
12345678:$6$CwjNF9B1Q8bkwohy$N4eZcj6YPxxbA1MYz0k9t96nCcj9VsZmzrvgqTd9tp2yXbzAdb3hWyjBq6nquMwFbKMJw9ZXs3Uqj.gfnozUS0
lakers2021:$6$fENvTJijoQgyjWMo$W37vZ364wQugW.W7k9Gl8OfJLl8DfR3tpFO/O4oPTCazJgNkJfNE4WiP4z8qSM8H1.ZJrMUWVAYdYOxt0GSHG1
gododgers:$6$1JdXTdpguO0$ZwFoDtZZ2byDemiLv5JAuea6ucAdtYQUTC4EppX2PMzSLaYtMm/ENpBZZAy70Ceuu6yAjXYtggrSOINTRWoBi0

不幸的是,我没有“我尝试过的代码”,因为我什至不知道在哪里。这是一个for循环吗?尽管?我尝试使用 bash 脚本和来自文件的交互式答案进行搜索,但无法将任何东西拼凑在一起。
我希望我的示例提供了足够的信息来理解我在寻找什么。 我在 Ubuntu Linux 上运行它 谢谢你

【问题讨论】:

标签: bash for-loop prompt


【解决方案1】:

您可以使用while + read 循环。见How can I read a file (data stream, variable) line-by-line (and/or field-by-field)

类似的东西。

#!/usr/bin/env bash

while IFS= read -r line; do
  printf '%s:%s\n' "$line" "$(mkpasswd -m sha-512 "$line")"
done < pw.prn

在 bash 脚本中如何引用文件作为交互式提示的输入

使用变量(位置参数“$1”)

#!/usr/bin/env bash

while IFS= read -r line; do
  printf '%s:%s\n' "$line" "$(mkpasswd -m sha-512 "$line")"
done < "$1"

然后

./mscript pw.prn

假设脚本的名称是myscript,而有问题的文件是pw.prn

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 2017-09-04
    • 2021-05-25
    • 2014-07-16
    相关资源
    最近更新 更多