【问题标题】:Getting md5sum hash from awk script从 awk 脚本获取 md5sum 哈希
【发布时间】:2014-10-06 09:44:17
【问题描述】:

如果我键入以下命令,则在我的 linux shell (ubuntu) 上:

echo -n -e "THIS IS A TEST" | md5sum

我得到的 md5 哈希值为:1586CFFAFA39E38959477DA9EAA41C31

如果我执行以下操作:

awk -f short.awk

short.awk 包含的位置:

BEGIN {

    print "HELLO"

    md5sum_command = sprintf("echo -n -e \"%s\" | md5sum", "THIS IS A TEST");

    if ( (md5sum_command | getline line) > 0) {
        result = line;
        type = "linux";
        hash_command = "echo -n -e \"%s\" | md5sum";
        printf("Command: %s\nResult = %s\n", md5sum_command, result);
        printf("It looks like you are on a linux environment, so the md5sum command will be used\n");
    } else {
        result = "FAILED";
    }
    close(md5sum_command);

}

我得到一个 md5 哈希值:a842e5b39bf5aef1af5d4a0ef7acf8e9

我不知道是什么问题。

【问题讨论】:

标签: linux shell awk md5sum


【解决方案1】:

您正在运行两个不同版本的 echo。在通过 awk 运行时,您可以在交互式 shell 中从 /bin/bash 获得内置函数,并从 /bin/sh 获得内置函数。它们的行为不同。

使用/bin/echo 在这两种情况下获得一致的行为。

【讨论】:

  • um ... echo 是一个独立的二进制文件。不过,它通常与 coreutils 一起提供 - 我发现很难相信任何 linux 二进制文件都使用“内置”回显,如果不是容易出错的话,那就太奇怪了
  • 查看 this question 了解为什么 echo 是内置函数。
  • 乔——这就是问题所在!感谢您的洞察力。
猜你喜欢
  • 2011-04-10
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 2016-07-22
  • 2013-05-01
  • 1970-01-01
  • 2013-02-06
相关资源
最近更新 更多