【问题标题】:Assign action to variable in Automator for use in Shell Script将动作分配给 Automator 中的变量以在 Shell 脚本中使用
【发布时间】:2023-03-18 13:24:01
【问题描述】:

好吧,这件事现在让我发疯了。所以操作 1 选择一个文件夹(我想将该文件夹的路径保存为 var_1),操作 3 选择一个文件(我想将此文件的路径保存为 var_2)

最后是这样。 . .

var_1 = '/Users/Prometheus/Desktop/'
var_2 = '/Users/Prometheus/Documents/a.txt'

那么如何在带有 python 的 Shell 脚本中使用这些变量及其值?我不能使用 sys.argv,因为它们被设置为一些奇怪的变量

我通常会输入'Ask for Finder Item' > Run Shell Script 然后

import sys

variable = open(argv[1]).read()

但在这种情况下我不能使用它。我的脚本是在 python 中的,所以我宁愿留在 python 中,因为我不知道任何其他语言

【问题讨论】:

    标签: python macos shell variables automator


    【解决方案1】:

    Automator 变量仅用于 Automator 工作流程。 shell 脚本或 Python 脚本都不能直接访问变量本身。 Run Shell Script 操作允许您通过以下两种方式之一将特定变量的值传递给 shell 脚本:通过 stdin 将它们通过管道传递或将它们作为执行参数传递。对于这种用例,后者更容易。首先,您需要在 Set Value of VariableGet Value of Variable 操作中选择 Automator 变量名称,以便可以在操作之间保留所选值。这是一个非常基本的工作流示例,其中我选择了两个文件夹:

    【讨论】:

    • 你不知道你帮了我多少,非常感谢。您的解释非常好,现在可以理解之前发生的事情了!
    【解决方案2】:

    您可以使用这样的运行 AppleScript 操作来显示对话框:

    POSIX path of (choose folder default location (path to desktop))
    result & linefeed & POSIX path of (choose file default location (path to desktop))
    

    然后在 Run Shell Script 操作中将“Pass input”设置为“to stdin”,并使用如下脚本:

    import sys
    folder, file = sys.stdin.read().splitlines()
    

    【讨论】:

      最近更新 更多