Я немного борюсь.
Когда я пишу сценарий ksh, мне нужно извлечь Подстроку Строки, в которой число вхождений ограничителя является гибким.
Это так, поскольку моя строка содержит имя файла, который может быть сжат несколько раз, поэтому имеет более 1 точки (.).
Эти точки будут моим разделителем, но, поскольку поставщик может включать номера версий в имя файла (например, software-v.3.2.4.tar.gz), я не вижу, чтобы было обрезать последний суффикс.
Прогресс выглядит следующим образом:
Имя файла сохраняется в переменной.
Файл распаковывается в первый раз. (убирая суффикс .gz из файла)
Теперь мне нужно извлечь архив .tar. Но моя команда все еще будет содержать суффикс .gz. Команда не будет работать, так как файл больше не имеет суффикса.
Как мне получить суффикс моей переменной.
Я не могу гарантировать, что количество разделителей останется прежним.
Я пробовал несколько комбинаций | рев | cur -d '.' | rev, но в этом случае я получаю только суффикс.
Я также попытался инициализировать переменную $ fileName снова фактическим именем файла, но, следовательно, мне нужно будет выполнить поиск по всему каталогу. Я стараюсь избегать этого.
...
fileName="whole file name"
pathTo="path in which it should be moved after decompression"
if [ "$fileType" = "gz" ]; then
gzip $pathTo$fileName -d $pathTo
#Problem occurs right here
tar xfv $pathTo$fileName -C $pathTo
else
echo "Unknown Filetype. Cannot decompress. Script stopped."
exit
fi
...
Я благодарен за любую помощь.
Поздравил
Yonkske