Передача результата оболочки в другую команду оболочки? - PullRequest
0 голосов
/ 20 сентября 2011

Просто изучаю Automator здесь, но я пытаюсь запустить команду преобразования для файла (blah.rtf-> blah.mobi), и я хотел бы взять получившийся файл .mobi и запустить на нем другую команду оболочки в другом действии. Или это, или есть способ установить его как вторую переменную и воздействовать на него тем же действием?

Вот мой код (с использованием инструментов командной строки Caliber):

Первое действие:

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 Ответ

3 голосов
/ 20 сентября 2011

Чтобы передать преобразованные файлы последующим действиям, первое действие должно вывести их пути:

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
...