【发布时间】: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
我不知道是什么问题。
【问题讨论】:
-
如果我从 awk 脚本中删除 -e 似乎适用于这个字符串,但我需要 -e 用于带有换行符的字符串。
-
为什么在
BEGIN块中使用getline,而不是使用awk 的内置行阅读行为? -
Tom,概念是先测试脚本运行在哪个环境(macos有md5功能,linux有md5sum功能)。但是这个问题与问题无关 - awk 的哈希结果与直接 shell 执行的结果不匹配。