2011-09-20 163 views
0

只是在这里学习Automator,但我试图在文件上运行一个转换命令(blah.rtf-> blah.mobi),并且我想要生成的.mobi文件并在其上运行另一个shell命令一个不同的行动。或者是,还是有办法将它设置为第二个变量,并在同一个动作中对其执行操作?将shell结果传递给另一个shell命令?

这里是我到目前为止的代码(使用口径命令行工具):

首先行动:

for f in "[email protected]" 
do 
    ebook-convert "$f" "$f".mobi 
done  

我想传递的.mobi文件运行:

for f in "[email protected]" 
do 
    mv "$f" $(echo "$f" | cut -d'.' -f1).mobi 
done 

有什么想法?谢谢!

+0

很密切的关系(虽然从略微不同的):[使用AWK以除去多个文件扩展名中的一个(http://stackoverflow.com/questions/7479536 /) –

+1

你有什么问题?你的命令是正确的,并且是我可以在这里找到的唯一问题的合理答案。 (使用变量替换会更有效率,但这与您的主要问题是相切的。'mv“$ f”“$ {f%。*}”。mobi') – tripleee

+0

哦,你当然可以做到你想要在第一个'for'循环中,而且确实应该。 – tripleee

回答

3

为了通过转换后的文件到后续动作,第一个动作必须输出其路径:

for f in "[email protected]" 
do 
    ebook-convert "$f" "$f".mobi 
    echo "$f".mobi 
done 

但你可以使它更通过使第一动作简单的创建一个具有正确名称的文件首位(如@tripleee建议的):

for f in "[email protected]" 
do 
    ebook-convert "$f" "${f%.*}".mobi 
    # echo "${f%.*}".mobi # optional -- uncomment if you need to pass the files on to subsequent actions 
done 
+0

这太棒了!真的很感激它。 – Kristian

相关问题