我创建了一个文件夹操作,以便每次将新的png文件放入文件夹时,使用imagemagick将新文件和文件夹内的现有.png文件合成并保存为新文件。看起来相当简单。我已经在终端尝试了这个脚本并且它可以工作但是当它在automator中它似乎没有被解雇时......我因为" f"而假设?
以下是我的自动贩卖机"运行Shell脚本"片段:
for f in "$@"
do
/usr/local/bin/convert BG.png "$f" -composite result.jpg
done
答案 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