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

时间:2015-09-06 11:48:11

标签: shell scripting

a:123234343
b:175645453
c:aadfefee

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

abcdefg
1234
arrewewe

这是“密码”文件。在我的脚本中,我将获取这些数据并使用sha256sum获取散列值,并将散列值与文件“user”中的数据(例如123234343)进行比较。如果散列值与来自文件“user”的数据相同,则i需要将结果输出到名为“result”的新文件。输出应该看起来像“a:abcdefg”。我知道(>结果)会将一些数据发送到“结果”文件。

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

1 个答案:

答案 0 :(得分:0)

我认为你的意思是这样的:

#!/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