Имея нулевой опыт написания сценариев любого рода, я прошу прощения, если этот вопрос слишком прост, чтобы быть разрешенным здесь.
Я обнаружил, что zenity очень полезен, так как моя память безнадежна, поэтому, если ее нет в меню (например, в приложениях командной строки), тогда я забываю, что они у меня есть, или просто забываю, как их использовать.
Так или иначе.
pdftotext - это приложение, которое у меня сейчас есть, и я вижу, как оно будет использоваться в будущем. Поэтому я использую сценарий оболочки, вызывающий zenity, чтобы иметь возможность вставить pdftotext в меню, и эй до того, как все заработает.
Я хочу пошутить, что я умен, поэтому было бы неплохо, если бы я мог получить выходной текстовый файл ($ szSavePath) для автоматической пометки «.txt» в конце.
Или даже выберите исходное имя файла ($ file), удалите .pdf и замените его на .txt в качестве выходного имени.
Может ли быть сделано?
#!/bin/bash
file="$(zenity --title "PDF to Text: Select a File to convert" --file-selection)"
szSavePath=$(zenity --file-selection --save --confirm-overwrite);echo $szSavePath
pdftotext "$file" $szSavePath
Если file
содержит foo.pdf
, можно разделить .pdf
использование ${file%%.pdf}
.
С szSavePath
, можно протестировать, если это содержит .txt
и добавьте его, если это не делает:
szSavePath=$(zenity --file-selection --save --confirm-overwrite)
[[ $szSavePath != *.txt ]] && szSavePath="$szSavePath.txt"
Можно предоставить имени файла PDF .txt
вместо .pdf
как имя файла по умолчанию, с помощью --filename
опция:
szSavePath=$(zenity --file-selection --save --confirm-overwrite --filename="${file%%.pdf}.txt")
Кроме того, не забудьте заключать свои переменные в кавычки, так, чтобы имена файлов с пробелами и другими специальными символами не вызывали проблемы:
pdftotext "$file" "$szSavePath"