用于图像合成的简单Automator Shell脚本无法正常工作

时间:2015-09-17 14:05:34

标签: bash imagemagick automator

我创建了一个文件夹操作,以便每次将新的png文件放入文件夹时,使用imagemagick将新文件和文件夹内的现有.png文件合成并保存为新文件。看起来相当简单。我已经在终端尝试了这个脚本并且它可以工作但是当它在automator中它似乎没有被解雇时......我因为" f"而假设?

以下是我的自动贩卖机"运行Shell脚本"片段:

for f in "$@"
do
   /usr/local/bin/convert BG.png "$f" -composite result.jpg
done

2 个答案:

答案 0 :(得分:1)

只需添加 BG.png& result.jpg应该是。

PATH=$PATH:/usr/local/bin
where=$(dirname $1)
for f in "$@"
do
   convert ${where}/BG.png "$f" -composite ${where}/result.jpg
done

<强>更新

如果您希望将生成的result.jpg图像写入其他位置;然后只需更新最终路径。 Automator传递了几个环境变量来使用。在这种情况下,HOME将是您当前登录用户的基本路径。因此,如果我希望将result.jpg自动放置在Desktop ....

PATH=$PATH:/usr/local/bin
where=$(dirname $1)
DESKTOP=${HOME}/Desktop
# `~/Desktop' will also work in this example
for f in "$@"
do
   convert ${where}/BG.png "$f" -composite ${DESKTOP}/result.jpg
done

答案 1 :(得分:0)

也许是offtopic,但为什么你总是转换BG.png?

但回到主题:当您使用ie cron进行预定脚本运行时,请验证您是否使用完整文件路径。如果从指定目录运行脚本,它将成功;但是当cron运行它时,$ CWD - 工作目录 - 可能会有所不同,并且没有文件被处理。

例如,您可以将完整目录路径放在命令行上并像这样解析它:

DIR=$1
shift
for f in "$@"; do
    convert BG.png "$DIR/$f" -composite result.jpg
done