Предположим, что я хочу связать файлы PPT, которые будут открыты со сценарием удара, который преобразовывает его в PDF, затем открывает его с approperiate редактором PDF. Как я делаю это?
Преобразование будет сделано с uniconv, как я узнал из другого вопроса
uniconv -f pdf presentation.odt
Я полагаю, что должен изменить "presentation.odt" с именем файла, которое инициировало этот сценарий
Вы подразумеваете, что со сценарием назовут (например), presentation.odt
как аргумент? Аргумент доступен как "$1"
в сценарии (двойные кавычки требуются, если бы имя файла содержит символы как пробелы, которые оболочка иначе развернула бы). Можно создать название файла PDF путем снимания .odt
суффикс: ${1%.odt}
. Обратите внимание, что это unoconv
, не несвязанное uniconv
.
#!/bin/sh
unoconv -f pdf "$1"
appropriate-pdf-editor "${1%.odt}.pdf"
В сценарии оболочки можно получить доступ к параметрам командной строки через переменный 1, 2, 3..., как в
#!/bin/bash
echo "$1"
echo "$2"
echo "$3"
# ...
Если Вам нужен он, "0$" представляет само название сценария.
Можно также повторно присвоить им переменную, и shift
их, для доступа больше чем к 9 параметрам.
Если Вы хотите найти все .odt
файлы и подают их в unoconv
, можно использовать find
инструмент для нахождения всех их затем передайте его по каналу в xargs
, который может сделать параллельную обработку.
find * -type f -iname "*.odt" | xargs -i -P12 "uniconv -f pdf {}"
Это будет find
все файлы в под управлением каталоге, рекурсивно, передавая по каналу файлы, в которые это находит xargs
, который дойдет до 12 процессов silmultaneously (использование -P0
для неограниченных процессов).