我正在尝试通过Automator中的“Run Shell Script”在OS X 10.14 Mohave中的Finder中选择的文件/文件夹上运行命令行应用程序作为QuickAction/Service。
无论选择哪个项目,都会出现以下错误:The action “Run Shell Script” encountered an error: “/Users/me/test/test1.zip: /Users/me/test/test1.zip: cannot execute binary file”
, 对于所选目录,返回末尾错误: Is a directory
。
我以前写过类似的Automator shell脚本,但从未遇到过这个错误。
我已经阅读了所有关于[Automator]
[shell]
以及“Automator encountered an error: cannot execute binary file”的问题,并且无法找到解决方案。
我已经添加了路径语句以确保可执行文件位于路径中。最好的解决方案似乎是要source ~/.bash_profile
,但我也尝试了export PATH=/usr/local/bin:$PATH
。
可执行文件具有适当的权限并且位于路径中:
→ wl artest
/usr/local/bin/artest
-rwxr-xr-x 1 me admin 14004618 Mar 25 20:46 /usr/local/bin/artest
相同的代码在shell脚本中执行得非常完美。
参数是错误的事实让我相信问题不在于脚本本身。我已经通过仅使用帮助开关而没有其他参数进行了测试:
#!/usr/bin/env bash
source ~/.bash_profile
artest -h
但是出现了相同的错误。
我更喜欢将所有参数传递给artest,因为它是多线程的,但是我尝试迭代参数:
for f in "$@"
do
基于另一个问题,为了测试我能想到的所有东西,我省略了显式的all参数:
for f
do
虽然这仍然适用于早期的Automator工作流程(见下文),但我却遇到了同样的错误。
我已经尝试根据其他问题添加了shebang语句,尽管我的以前的shell脚本工作流没有问题。我原以为这在上面的shell选择菜单中有所涉及,例如“/bin/bash”
我读过一些问题,他们说“运行Shell命令”并不同于在终端中运行,但是老实说,我找不到解决方案,而且10.14中组成的操作无法正常工作,而我的服务工作流从以前的OS(和Automator)版本继续正常工作。
我觉得我在这里错过了某些基础知识(或新版Automator中存在重大错误),但我只是看不见它。
虽然如此,这个shell脚本仍然可以正常工作:
source ~/.bash_profile
应该解决任何 PATH 问题。 - Mike Mwhich find
和which cd
,然后在自动化窗口中使用完整路径(通常为/usr/bin/find
/usr/bin/cd
)。 - Maciek Rekexport PATH=/usr/local/bin:$PATH
,然后尝试运行。 - Art Geigel