Описание тега harvesting
Вопрос в том, что ~
-расширение не выполняется по переменной расширения (когда вы ссылаетесь на что $каталог исходного кода
без кавычек), ни внутри двойных кавычек (при назначении, что каталог исходного кода
переменной).
В уходящем $каталог исходного кода
без кавычек, вы вызываете сплит+Глоб оператора. То есть строку, которая хранится в том, что скалярное $каталог исходного кода
переменной (~/ПИ/страницы tutos/* ~/скрипты/*
) сначала расщепляется по $МФС
(пустые по умолчанию), а затем каждое слово подвергается универсализации, то есть рассматриваются как шаблоны, которые расширяют список соответствующих файлов.
Потому что ~
не расширяется к вашей домашней директории есть, что ~
это просто относиться как к любому другому персонажу, поэтому он просто ищет файлы в ~/ПИ/страницы tutos
каталог, где ~
будет директории в текущей директории, которая в вашем случае не существует.
Лучше было бы сделать $каталог исходного кода
массива и имеют Глобс расширили в момент уступки:
Каталог исходного кода=(~/ПИ/страницы tutos/* ~/скрипты/*) # ~ и комки расширили в этот момент
деготь cvpzf "именем" "${каталог исходного кода[@]}"
Обратите внимание, что применение сплит+Глоб оператора на $именем
не имеет смысла, поэтому мы убрали его процитировать именем
.
Обратите внимание, что если ~/ПИ/страницы tutos/*
не соответствует, она будет оставлена как есть, так что вы все еще получаете ошибку из смолы
. Чтобы избежать этого, вы могли бы сделать:
shopt -с nullglob # удалить несоответствующие Глобс
Каталог исходного кода=(~/ПИ/страницы tutos/* ~/скрипты/*)
если ((${#каталог исходного кода[@]} != 0)); тогда
деготь cvpzf "именем" "${каталог исходного кода[@]}"
интернет
Вы можете быть уговорены для того чтобы сделать:
Каталог исходного кода="$Home/ПИ/страницы tutos/* $главная/сценарии/*"
деготь cvpzf "именем" $каталог исходного кода
В качестве переменных (таких как $дома
) расширяются в двойные кавычки, но я бы не советовал этого делать так что бы не работать должным образом, если $дома
содержит Глоб символы или символы $МФС
.
~
ы расширяются в переменной назначения, когда он не цитирует, А когда в начале или следующее :
(Это значит, что он работает в задания переменных как в$Path
, $переменная LD_LIBRARY_PATH
... например путь=~/ОГРН:~на/sbin
). Поэтому вы можете быть уговорены для того чтобы сделать:
Каталог исходного кода=~/ПИ/страницы tutos/*:~/скрипты/* # ~ (не комки) расширил здесь
ИФС=:
деготь cvpzf "именем" $каталог исходного кода
Но это то же самое, что не работать должным образом, если дом за$
содержит $МФС
персонажей (на этот раз :
, так что очень маловероятно, поскольку файл/etc/passwd и
что определяет ваш домашний каталог, разделенных двоеточием стол) или Глоб персонажей.