脚本通过 STDIN 重定向接受文件并以特定方式将结果输出到文件

script accept file via STDIN redirection and output result to a file in a specifical way

a:123234343
b:175645453
c:aadfefee

这是脚本应该接受的名为 "user" 的文件。我知道(cat 用户)可以从文件 "user" 中获取所有数据。但是,我想读取数据并且只将 "a:" 保留为变量并将“123234343”与另一个名为 "password" 的文件中的数据进行比较。

abcdefg
1234
arrewewe

这是 "password" 文件。在我的脚本中,我将获取这些数据并使用 sha256sum 获取哈希值,并将哈希值与文件 "user" 中的数据(例如 123234343)进行比较。如果哈希值与文件 [=18] 中的数据相同=],我需要将结果输出到一个名为"result"的新文件中。输出应该类似于 "a:abcdefg"。我知道 (>result) 会将一些数据发送到 "result" 文件。

所以我认为有一种方法可以将 "a:" 存储为一个变量,并将“123234343”存储为另一个变量。但是我不知道该怎么做,或者有比这更简单的方法。

我想你的意思是这样的:

#!/bin/bash
while IFS=':' read p1 p2; do
   echo p1 is $p1, p2 is $p2
done < user

IFS 是输入字段分隔符,它将行分成字段,这样当您执行 read 时,它知道一个字段在哪里结束,下一个字段从哪里开始。

输出

p1 is a, p2 is 123234343
p1 is b, p2 is 175645453
p1 is c, p2 is aadfefee

到 运行 脚本,将其保存在名为 go 的文件中,然后像这样使其可执行:

chmod +x go

和运行是这样的:

./go