JJW*_*Web 2 shell applescript command md5
我只是尝试使用AppleScript计算字符串的MD5:
set hash_string to do shell script "echo -n hi | md5"
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我实际上用"hi"替换了传递给shell的字符串作为测试.AppleScript报告:
tell current application
do shell script "echo -n hi | md5"
--> "5ea3a74c5a5c60abd09da8c5f85fa0a5"
end tell
Run Code Online (Sandbox Code Playgroud)
直接在终端中运行相同的命令会导致:
% echo -n hi | md5
49f68a5c8493ec2c0bf489821c21fc3b
Run Code Online (Sandbox Code Playgroud)
虽然命令是相同的,但计算的散列是不同的.显然,在AppleScript中传递了其他字符,但我似乎无法弄清楚它们是什么.我感谢任何指导.
如果你删除了,你可以看到发生了什么| md5.在AppleScript案例中,您将看到-n hi输出.这是因为sh echo调用的POSIX do shell script不支持,-n而bash或者csh echo内置函数或/bin/echo命令都支持-n.
$ bash
$ echo -n hi
hi$ sh
$ echo -n hi
-n hi
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅Mac OS X echo手册页或POSIX文档echo.注意,POSIX标准的要求是一致的实现echo必须不支持任何选项,其中包括-n; 为了在shell和系统之间实现兼容性,POSIX编辑建议使用printf诸如抑制换行之类的操作.
tell current application
do shell script "printf '%s' hi | md5"
end tell
--> "49f68a5c8493ec2c0bf489821c21fc3b"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1546 次 |
| 最近记录: |