Проблема такая - мне нужно написать скрипт-обёртку, добавляющую некоторые опции к tar. Скрипт этот должен иметь возможность работать с путями, содержащими пробелы. Логика работы у него такая - из всех аргументов отрезаются несколько первых, остальные передаются tar.
В чём, собственно, проблема. Допустим есть такой скрипт:
#!/bin/bash
tar "$@"
у него всё прекрасно, tar получает именно то, что нужно. Но мне надо от $@ кой-чего отрезать. Не проблема:
#!/bin/bash
TAR_OPTS=${@: -5}
tar "$TAR_OPTS"
Однако облом - в этом случае у tar будет всего один параметр - огромная строка из опций, как будто его вызвали как tar "-cvjf ..."
Даже так не работает:
#!/bin/bash
TAR_OPTS=$@
tar "$TAR_OPTS"
Хотя, казалось бы, от первого варианта не отличается абсолютно ничем! Игра с кавычками не даёт никаких значимых результатов.
Вопрос, собственно, в том, как правильно сделать операцию по типу ${@: -5} так, чтобы результат всё ещё представлял из себя не одну строку, а набор строк-аргументов, каждая из которых может быть с пробелами?