使用管道编写shell脚本

时间:2018-03-28 13:14:27

标签: shell pipe md5 cut tee

我有兴趣编写一个shell脚本,它将通过使用MD5校验和算法告诉我文件是否已被更改或更改。

我正在使用以下代码或代码,但是不太明白如何在示例中使用管道。我相信这是将一个文件与另一个保存的文件进行比较,但是如果使用cut和tee命令,它会喜欢任何形式的解释。提前谢谢!

md5=`md5sum ${FILE} | cut -d" " -f1 | tee "${SAVEDIR}/${FILE}.md5"` 

2 个答案:

答案 0 :(得分:1)

此代码只是执行以下操作的一种方法:

  • 通过变量中给出的文件的 md5sum 获取md5校验和并将其传递给
  • cut ,它接受提交给它的字符串的第一行并读取它直到出现空格。然后把它管理到
  • tee ,它只是将字符串放入给定的文件夹和文件中。

请查看所有命令/程序的手册页,因为它包含了解其行为所需的所有信息

答案 1 :(得分:1)

首先,我想更改以下命令: -

md5=`md5sum ${FILE} | cut -d" " -f1 | tee "${SAVEDIR}/${FILE}.md5"` 

md5=$(md5sum ${FILE} | cut -d" " -f1 | tee "${SAVEDIR}/${FILE}.md5") 

因为这些日子里第一个被认为是旧的。

现在关于|,在Unix / Linux环境中,我们使用该指令将一个命令的输出重定向到另一个命令。最左边的命令总是获得第一个首选项并首先执行。

现在看下面,这里总共有3个命令

要执行的第一个命令是

 md5=`md5sum ${FILE}

上述命令执行后,其输出将重定向到命令

 cut -d" " -f1 'output from  md5=`md5sum ${FILE}'

因此,在上面的cut命令中,将对第一个命令的输出进行处理。

现在最终来自cut -d" " -f1 'output from md5=md5sum ${FILE}' 的输出将重定向/提供给命令tee "${SAVEDIR}/${FILE}.md5"),这将生成最终输出,并且该输出将存储在变量md5

希望这会对你有所帮助。