我正在尝试通过Automator“运行Shell脚本”在Finder中的选定文件/文件夹上以OS X 10.14 Mohave中的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遇到错误:无法执行二进制文件”,并且无法找到解决方案。
我添加了path语句,以确保可执行文件在路径中。最好的解决方案似乎是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
并且基于另一个问题,为了测试所有我想到的东西,我省略了所有明确的参数:
for f
do
虽然这在早期的Automator工作流程中仍然有效(请参见下文),但我失败并出现相同的错误。
尽管我以前的shell脚本工作流在没有一个脚本工作流的情况下仍能正常工作,但我尝试根据此处的其他问题添加shebang语句。我假设上面的shell选择菜单中涵盖了这一点,例如“ / bin / bash”
我已经阅读了一些问题,它们指出“运行Shell命令”与在终端中运行不一样,但是老实说,当我使用以前的OS(和Automator)提供的服务工作流时,我找不到解决方案,也无法在10.14中执行操作版本继续正常工作。
我觉得我在这里缺少一些基本知识(或者新的Automator版本中有一个重大错误,但我看不到它。
尽管此shell脚本运行良好: