【问题标题】:Run a bash script within Automator using positional parameters使用位置参数在 Automator 中运行 bash 脚本
【发布时间】:2020-05-20 22:37:07
【问题描述】:

这是我第一次使用 Automator,它看起来是一个非常漂亮的工具。然而,在自动化的最后,我遇到了一个问题。我的自动化工作流程的目标是指定一个路径,然后创建一个目录Highschool1,例如,在该路径中。
从这里,我希望它搜索指定路径中名称中包含“Highschool1”的任何文件,并将它们移动到新的Highschool1 目录中。以下是我的 bash 脚本在终端中的工作方式:

mkdir "/Users/tommy/Desktop/TestShow1/WG/Highschool1"

这会按预期创建目录。那么:

find /Users/tommy/Desktop/TestShow1/WG -name 'Highschool1' -prune -o -type f -name '*Highschool1*' -exec mv -- {} /Users/tommy/Desktop/TestShow1/WG/Highschool1 \;

这会在排除新的Highschool1 目录的同时找到我想要的文件,然后将找到的文件移动到该Highschool1 目录中。一切都在基地按预期工作。

当我尝试使用位置参数在我的自动化中应用此脚本时,它会停止工作。

-我用输入“Highschool1”填充一个名为“HighschoolName”的变量
- 然后我用输入填充一个名为“pathA”的变量,这是我选择的路径:“/Users/tommy/Desktop/TestShow1/WG”
- 然后我回调我的 HighschoolName 变量并从位置参数开始。

这是我使用的最终脚本:

mkdir "$1/$2"

find /$1 -name '$2' -prune -o -type f -name '*$2*' -exec mv -- {} /$1/$2 \;

这会在我想要的位置创建目录Highschool1,但无法将任何文件移入其中。它也没有给我任何错误消息。它就像脚本成功运行一样。有谁知道问题可能是什么?

【问题讨论】:

    标签: bash automator positional-parameter


    【解决方案1】:

    了解quoting

    在:

    find /$1 -name '$2' -prune -o -type f -name '*$2*' -exec mv -- {} /$1/$2 \;
    

    '$2' 不会对变量进行插值,您需要使用"$2"'*$2*' 相同)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      相关资源
      最近更新 更多