Сценарий Bash: Как получить имя файла / путь

Предположим, что я хочу связать файлы PPT, которые будут открыты со сценарием удара, который преобразовывает его в PDF, затем открывает его с approperiate редактором PDF. Как я делаю это?

Преобразование будет сделано с uniconv, как я узнал из другого вопроса

uniconv -f pdf presentation.odt

Я полагаю, что должен изменить "presentation.odt" с именем файла, которое инициировало этот сценарий

2
задан 13 April 2017 в 15:25

3 ответа

Вы подразумеваете, что со сценарием назовут (например), presentation.odt как аргумент? Аргумент доступен как "$1" в сценарии (двойные кавычки требуются, если бы имя файла содержит символы как пробелы, которые оболочка иначе развернула бы). Можно создать название файла PDF путем снимания .odt суффикс: ${1%.odt}. Обратите внимание, что это unoconv, не несвязанное uniconv.

#!/bin/sh
unoconv -f pdf "$1"
appropriate-pdf-editor "${1%.odt}.pdf"
4
ответ дан 2 December 2019 в 02:09

В сценарии оболочки можно получить доступ к параметрам командной строки через переменный 1, 2, 3..., как в

#!/bin/bash

echo "$1"
echo "$2"
echo "$3"
# ...

Если Вам нужен он, "0$" представляет само название сценария.

Можно также повторно присвоить им переменную, и shift их, для доступа больше чем к 9 параметрам.

1
ответ дан 2 December 2019 в 02:09

Если Вы хотите найти все .odt файлы и подают их в unoconv, можно использовать find инструмент для нахождения всех их затем передайте его по каналу в xargs, который может сделать параллельную обработку.

find * -type f -iname "*.odt" | xargs -i -P12 "uniconv -f pdf {}"

Это будет find все файлы в под управлением каталоге, рекурсивно, передавая по каналу файлы, в которые это находит xargs, который дойдет до 12 процессов silmultaneously (использование -P0 для неограниченных процессов).

0
ответ дан 2 December 2019 в 02:09

Другие вопросы по тегам:

Похожие вопросы: