Лучший способ использовать checkinstall

Короче говоря, вы создаете массив files и расширяете его.

Вы читаете это так:

VAR = ... означает, что вы назначаете переменную. VAR = (...) означает, что вы назначаете массив bash переменной.

$ (...) означает, что вы запускаете команду и получаете ее вывод, в вашем случае список файлов, которые соответствуют заданному шаблону, которые настолько стары, а затем назначают каждый файл элементу в bash множество.

$ {...} означает, что вы читаете значение переменной, например:

$ SOMEVAR="a value"
$ echo "${SOMEVAR}"
a value

В bash $ VAR и $ {VAR} эквивалентны, но нотация $ {VAR} позволяет вам делать некоторые дополнительные вещи. В частности, echo "$ {VAR} iable" расширит переменную $ VAR и объединит ее со строкой iable , тогда как echo $ VARiable ] попытается расширить переменную $ VARiable . Вы также можете выполнить некоторую расширенную замену , используя нотацию $ {...} .

В нашем случае мы читаем файловую переменную с помощью $ {file ...} . Затем [...] указывает, что мы читаем массив bash . Итак, мы пытаемся получить доступ к элементу массива файлов, бит внутри [...] сообщает нам, какие элементы, это может быть 1 для доступа к первому элементу, 2 для доступа ко второму и так далее (массивы bash индексируются с 1, а не с 0). @ означает все элементы, поэтому мы пытаемся получить доступ ко всем элементам массива bash под названием file .

Вы можете попробовать это со следующим:

% ARRAY=("a value" "another value" "fred")
% for x in "${ARRAY[@]}"; do echo "$x"; done
a value
another value
fred

Преимущество использования массивов вместо строк, разделенных пробелами, заключается в том, что вы можете включать пробелы в значения, как указано выше. Таким образом, в вашем случае каждый файл в массиве files будет рассматриваться как отдельный аргумент, а пробелы в именах файлов будут обрабатываться правильно.

По сути, ваш snipit находит и собирает список файлов и передает их как отдельные аргументы команде tar.

3
11.09.2015, 16:21
0 ответов

Теги

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