Automator: 动作“运行Shell脚本”遇到错误:无法执行二进制文件

4

我正在尝试通过Automator中的“Run Shell Script”在OS X 10.14 Mohave中的Finder中选择的文件/文件夹上运行命令行应用程序作为QuickAction/Service。

Problem Automator shell script

无论选择哪个项目,都会出现以下错误: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脚本仍然可以正常工作:

Working Automator shell script


Automator的“运行Shell脚本”操作与“do shell script”类似,使用自己的环境,因此不使用您的PATH。使用可执行文件的完整路径是否有效? - red_menace
谢谢回复,但是使用完整路径并没有解决问题。我很确定 source ~/.bash_profile 应该解决任何 PATH 问题。 - Mike M
你可能需要检查 which findwhich cd,然后在自动化窗口中使用完整路径(通常为 /usr/bin/find /usr/bin/cd)。 - Maciek Rek
4
将shell设置为/bin/zsh,并将脚本区域的第一行设置为export PATH=/usr/local/bin:$PATH,然后尝试运行。 - Art Geigel
1个回答

2

您可能需要进入“安全性与隐私”系统偏好设置,并授予Automator完全磁盘访问权限。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接