在我的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
我无法弄清楚问题是什么。
答案 0 :(得分:1)
您正在运行两个不同版本的echo
。当您通过awk运行时,您可以从交互式shell中的/bin/bash
获取内置结构,并从/bin/sh
获取内置结构。他们的行为不同。
使用/bin/echo
在两种情况下都能获得一致的行为。