【问题标题】:passing multiple parameters to a shell script from Automator从 Automator 将多个参数传递给 shell 脚本
【发布时间】:2014-05-02 05:48:58
【问题描述】:

请原谅一个新手问题。我搜索了高低,但没有找到类似的情况。

我正在尝试创建一个自动流程,我可以在其中向 jpg 图像添加关键字。

我正在使用 Hazel 监控 Mac 上的文件夹,当它找到文件时,它会调用 Automator 工作流程脚本。因此脚本已经接收到一个参数(文件名和路径)

shell 脚本执行以下操作(使用传递输入:作为参数)(shell:/bin/bash)

for f in "$@"
do
    exiftool -keywords=myKeyWord "$1"
    exiftool -delete_original! "$1"
done

到目前为止一切正常。我不知道如何从 Automator 传递第二个参数,这将允许我从对话框中输入关键字。

我尝试了一个文本字段(操作:询问文本),并用“$2”更新硬编码值“myKeyWord”,但它给了我一个错误,指出“1 个文件由于错误而没有更新”

任何帮助将不胜感激。

提前致谢,

托马斯

【问题讨论】:

    标签: bash shell automator


    【解决方案1】:

    循环针对脚本的每个参数进行迭代。但是,在循环中只使用了第一个参数:$1 而不是 $f。因此,如果您使用 3 个参数调用脚本,它会执行以下操作:

    exiftool -keywords=myKeyWord "$1"
    exiftool -delete_original! "$1"
    exiftool -keywords=myKeyWord "$1"
    exiftool -delete_original! "$1"
    exiftool -keywords=myKeyWord "$1"
    exiftool -delete_original! "$1"
    

    也许你的意思是做这样的事情(没有循环)?只是猜测:

    exiftool -keywords="$2" "$1"
    exiftool -delete_original! "$1"
    

    【讨论】:

    • 是的,这正是我想要做的。我删除了循环语句,但它仍然不起作用。该语句现在只有:do exiftool -keywords="$2" "$1" exiftool -delete_original! “$1”完成了我错过了什么吗?
    • @user3595091 删除dodone,它们不应该在那里。还可以尝试使用set -x 执行以查看如果它仍然不起作用会发生什么。我不知道命令需要什么,您需要查看手册页..
    • 我会试试的。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2011-05-30
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 2019-09-29
    • 2014-11-27
    相关资源
    最近更新 更多