将shell结果传递给另一个shell命令?

时间:2011-09-20 03:57:14

标签: macos shell automator

在这里学习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

有什么想法?谢谢!

1 个答案:

答案 0 :(得分:3)

为了将转换后的文件传递给后续操作,第一个操作必须输出其路径:

for f in "$@"
do
    ebook-convert "$f" "$f".mobi
    echo "$f".mobi
done

但是你可以通过让第一个动作首先创建具有正确名称的文件(如@tripleee建议的那样)来简化它:

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