【发布时间】:2011-03-19 01:07:19
【问题描述】:
在命令行上,如果我运行
echo -n "foo" | openssl aes-128-cbc -k "key" -base64 -e
(-n 标志阻止 echo 在其输出末尾添加换行符),我明白了
U2FsdGVkX1+nMW5I4eZSasPKfsUuCpbFsnn56ngEdec=
但是当我跑步时
exec = require('child_process').exec;
exec('echo -n "foo" | openssl aes-128-cbc -k "key" -base64 -e', callback);
回调获取输出
U2FsdGVkX1/CARBiGos0x9ALNhFqcIaFvZ9EUvVBxuc=
为什么不一样?解密它,你会得到字符串
-n foo
所以不知何故,exec 将 -n "foo" 编码为 "-n foo"(在节点 0.4.2 下)。
这是最奇怪的部分:当我直接从 TextMate 运行我的代码时(通过 jashkenas 的 CoffeeScript 包),我没有遇到这个问题。起初我认为这是一个路径问题,但事实并非如此(使 PATH 在两个环境中相同没有效果)。可能是因为一个环境是 TTY 而另一个不是。
其他人是否意识到这种不一致?这是一个节点错误,还是我忽略了什么?我猜如果我使用较低级别的spawn 而不是exec,我的问题就会消失。
【问题讨论】: