如何在 Automator 中使用变量

2 variables workflow automator

请耐心等待,我使用 Automator 不久。

我在 PHP 方面有很好的经验(完全不同)和一些小的脚本知识(苹果脚本、shell 等)。

我尝试使用 Automator 复制此逻辑工作流程:

  1. 要求用户插入值(设置$variable_a)
  2. 要求用户再插入一个值(设置 $variable_b)
  3. 提交
  4. 这会触发一个使用上面提交的两个值的脚本。一个虚拟示例:

    回显$变量_a 回显变量_b

看似简单,但使用 Automator 建立此逻辑的速度令人惊讶。

问题是,在上面的第 2 阶段, my突然变成了和$variable_a的混合值。$variable_a$variable_b

为什么会出现这种情况?

它们似乎并不像我理解的任何语言或编程步骤中“变量”的一般用法那样起作用。在其他系统中,通常,变量保留它们定义的值(除非变量变量或者您有意识地在代码中修改它们)

我附加了一个Automator“工作流程”文件,它完全复制了上述工作流程逻辑。这是一个 ZIP 文件,将其解压缩并在 Automator 中打开进行测试。

您将看到(在最后一步的结果部分)这些值如何变为(恕我直言)为假。

有人提示吗?

CJK*_*CJK 5

发生这种情况的原因是工作流中一个操作的输出被作为工作流下一个操作的输入。当操作接收输入时,它们在某些情况下也可以聚合,例如在设置和获取变量时。

它这样做的原因是,您可以将多个变量直接发送到运行 Shell 脚本操作中,并使用$1、$2等引用它们。如果Automator只接受最新的输入,您将永远无法提供将多个变量添加到 shell 脚本中,而无需先手动将它们组合到列表中。

解决方案很简单。每个操作都有一个可以按下的“选项”按钮,该按钮会显示一个名为“忽略此操作的输入”的复选框。对于您想要独立于先前结果进行操作的那些操作,需要进行检查。

以下是您的工作流程的屏幕截图,其中针对需要它的操作勾选了相应的复选框:

自动化工作流程

  • @smileBeda 在 **Run Shell Script** 操作中实现变量引用的方法是直接在其前面插入一系列 **获取变量值** 操作:即 *获取变量 > 获取变量 > ... >运行 Shell 脚本*。您想要将输入**作为参数**传递。那么,之前给您带来的不便现在变成了您的福祉,因为 shell 脚本之前的所有可变操作都将聚合到一个列表中,该列表作为参数传递给 shell 脚本,可以引用 `$1`、`$2`等等,以及`$@`。 (2认同)