【发布时间】:2011-09-20 14:34:09
【问题描述】:
刚刚在这里学习 Automator,但我正在尝试对文件 (blah.rtf->blah.mobi) 运行转换命令,我想获取生成的 .mobi 文件并在其上运行另一个 shell 命令在不同的动作中。是这样,还是有办法将其设置为第二个变量并在同一操作中对其进行操作?
这是我目前的代码(使用 Calibre 命令行工具):
第一个动作:
for f in "$@"
do
ebook-convert "$f" "$f".mobi
done
我想传递那个 .mobi 文件来运行:
for f in "$@"
do
mv "$f" $(echo "$f" | cut -d'.' -f1).mobi
done
有什么想法吗?谢谢!
【问题讨论】:
-
非常密切相关(尽管略有不同):Using awk to remove one of multiple file extensions
-
您有什么问题?您的命令是正确的,并且是我在这里能找到的唯一问题的合理答案。 (使用变量替换会更有效,但这与您的主要问题无关。
mv "$f" "${f%.*}".mobi) -
哦,你当然可以在第一个
for循环中做任何你想做的事情,而且确实应该这样做。 -
Automator 将修改后的 .mobi 文件传递到下一个 shell 命令时存在一些问题。我无法让它重命名,而是出现 Automator 错误。我的猜测是它没有将任何文件传递给第二个 shell 命令,因此对 $@ 和 $f 的引用是无用的。