Задать вопрос
@myppomeu

Как правильно подставить значение переменной в качестве ключа команды (обработка пробела)?

Фрагмент скрипта:
WHATTOBACK="-P Music -P 'Наши документы' -P Работа/Неактуальное"
dar -c ${BACKDIR}`date -I`_"$SERIALNUMBER"_1full $WHATTOBACK

При выполнении скрипта папка "Наши документы" копируется, хотя с ключом -P она не должна копироваться.
Если
WHATTOBACK="-g Server/"
то все работает прекрасно.
echo $WHATTOBACK
возвращает корректное содержимое переменной (все что внутри кавычек).
Также пробовал следующие способы записи:
WHATTOBACK='-P Music -P "Наши документы" -P Работа/Неактуальное'
WHATTOBACK='-P Music -P \"Наши документы\" -P Работа/Неактуальное'
WHATTOBACK='-P Music -P "Наши\ документы" -P Работа/Неактуальное'
WHATTOBACK='-P Music -P Наши\ документы -P Работа/Неактуальное'
WHATTOBACK="-P Music -P 'Наши\ документы' -P Работа/Неактуальное"


В строке с dar пробовал заменить $WHATTOBACK на `echo $WHATTOBACK`

Если то же самое запустить не скриптом, а из командной строки, то все отрабатывает как задумано (т.е. папка не включается в архив).

Как мне корректно обработать этот пробел и подставить значение переменной в качестве нескольких ключей для dar'а?
  • Вопрос задан
  • 445 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Как мне корректно обработать этот пробел и подставить значение переменной в качестве нескольких ключей для dar'а?


WHATTOBACK=( -P Music -P 'Наши документы' -P Работа/Неактуальное )
dar -c ${BACKDIR}`date -I`_"$SERIALNUMBER"_1full "${WHATTOBACK[@]}"


Чтобы понять, почему ничего не работало и как массив всё чинит -- медитировать над секциями Word Splitting и Arrays из man bash.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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