我对 Automator.app 在 Mac OS X Snow Leopard 中创建上下文服务的能力很感兴趣。我想创建一些可通过键盘访问的快捷方式,通过调用 shell 脚本来操作文本片段。但是,Automator 只建议使用 bash、Perl、Python 和 Ruby(以及其他)来允许这样做。但是,由于 PHP 还附带 Mac OS(老实说,它是我完全掌握的唯一脚本语言),我想知道为什么我不能运行 PHP shell 脚本。
5 回答
dbr 上面的解决方案非常好,但我发现它对我不起作用,可能是由于后来更改了 shell、php 或 OS 版本(我使用的是 OS X 10.8)。经过一番摸索后,我发现答案是引用 heredoc 标记。
一个有用的补充是使用适当的语法将参数传递给 php 脚本。把所有这些放在一起,我正在使用:
php -- "$@" <<'EOF'
<?php
print_r( $argv );
?>
EOF
这只是一个 hack,但是如何创建一个 python、ruby、perl 或 bash 脚本来调用你想要执行的 php 脚本的 php 命令行解释器?
例如在 bash 中就像这样简单:
#!/bin/bash
php myscript.php
现在保存它,给它执行权限:
chmod +x my_bash_script.sh
瞧。Automator 现在可以运行调用 php 脚本的 bash 脚本。
您可以使用“运行 Shell 脚本”操作来运行 PHP 脚本。一种自包含的方法是使用<<EOF ... EOF
将脚本传递给php
命令:
(我强烈建议学习 Python、Ruby 或 Perl。PHP 确实在 Web 编程方面有一些优势,但它并不适用于命令行脚本。它当然是可行的,只是不会那么令人愉快。 )
Automator 支持的 shell 列表位于
/System/Library/Automator/Run\ Shell\ Script.action/Contents/Resources/Shells.plist
您可以按照这个人的说明为 /usr/bin/php 添加一个条目。您可能需要先将 .action 文件复制到 ~/Library/Automator,然后再进行复制。
当然,正如其他人所建议的那样,将其包装在 bash 脚本中可能更容易。
Automator 有一个“运行 Shell 脚本”操作,只需将其添加到您的工作流程并按照左下角的说明进行操作。