从Automator将多个参数传递给shell脚本

时间:2014-05-02 05:48:58

标签: bash shell automator

原谅一个新手问题。我搜索过高低,但没有发现类似的情况。

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

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

shell脚本执行以下命令(使用pass input:as arguments)(shell:/ bin / bash)

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

到目前为止一切正常。我无法弄清楚如何从Automator传递第二个参数,允许我从对话框中输入关键字。

我尝试了一个文本字段(操作:询问文本),并更新了硬编码的值' myKeyWord'使用" $ 2",但它给出了一个错误说明" 1个文件由于错误而未更新"

非常感谢任何帮助。

提前致谢,

托马斯

1 个答案:

答案 0 :(得分: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"