【问题标题】:How do I execute a PHP shell script as an Automator action on Mac OS X如何在 Mac OS X 上将 PHP shell 脚本作为 Automator 操作执行
【发布时间】:2010-11-26 18:47:02
【问题描述】:

我对 Automator.app 在 Mac OS X Snow Leopard 中创建上下文服务的能力很感兴趣。我想创建一些键盘可访问的快捷方式,通过调用 shell 脚本来操作文本 sn-ps。但是,Automator 只建议使用 bash、Perl、Python 和 Ruby(以及其他)来允许这样做。但是,由于 PHP 还附带 Mac OS(老实说,它是我完全掌握的唯一脚本语言),我想知道为什么我不能运行 PHP shell 脚本。

【问题讨论】:

    标签: php macos shell service automator


    【解决方案1】:

    这只是一个 hack,但是如何创建一个 python、ruby、perl 或 bash 脚本来调用 php 命令行解释器以及您要执行的 php 脚本?

    例如在 bash 中就这么简单:

    #!/bin/bash   
    php myscript.php
    

    现在保存它,给它执行权限:

    chmod +x my_bash_script.sh
    

    然后瞧。 Automator 现在可以运行调用 php 脚本的 bash 脚本。

    【讨论】:

      【解决方案2】:

      Automator 有一个“运行 Shell 脚本”操作,只需将其添加到您的工作流程并按照左下角的说明进行操作即可。

      【讨论】:

        【解决方案3】:

        您可以使用“运行 Shell 脚本”操作来运行 PHP 脚本。一种自包含的方法是使用<<EOF ... EOF 将脚本传递给php 命令:

        (我强烈建议学习 Python、Ruby 或 Perl。PHP 在 Web 编程方面确实有一些优势,但它不适合命令行脚本。它当然是可行的,只是不会几乎一样......愉快)

        【讨论】:

          【解决方案4】:

          Automator 支持的 shell 列表在

           /System/Library/Automator/Run\ Shell\ Script.action/Contents/Resources/Shells.plist
          

          您可以关注this guy's instructions 为/usr/bin/php 添加一个条目。您可能需要先将 .action 文件复制到 ~/Library/Automator,然后再进行复制。

          当然,正如其他人所建议的那样,将其包装在 bash 脚本中可能更容易。

          【讨论】:

            【解决方案5】:

            dbr 上面的解决方案非常好,但我发现它对我不起作用,可能是由于后来更改了 shell、php 或 OS 版本(我使用的是 OS X 10.8)。经过一番摸索后,我发现答案是引用 heredoc 标记。

            一个有用的补充是使用适当的语法将参数传递给 php 脚本。将所有这些放在一起,我正在使用:

            php -- "$@" <<'EOF'
            <?php 
            print_r( $argv );
            ?>
            EOF
            

            【讨论】:

            • 要使这项工作适用于 python,请使用您的 env 的默认解释器,将上面更改为单个连字符:python - "$@"
            猜你喜欢
            • 2014-09-29
            • 1970-01-01
            • 1970-01-01
            • 2010-09-21
            • 2014-02-23
            • 2010-12-12
            • 2011-02-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多