@lex63
Начинающий web-разработчик

Как обработать пустой аргумент в функции?

Пишу скрипт для резервного копирования.
В нем есть функция с помощью tar делающая архив.
Есть 3 вида архивов. В двух из них есть исключаемые папки. В одном нет.
Пути которые нужно архивировать и исключаемые папки передаются с помощью ссылок на массивы из основного скрипта.
Проблема в том, что в третьем варианте, когда исключаемых папок нет, скрипт прерывается.
Вывод bash -x показывает, что к tar добавляется пустая строка и это так понимаю причина. Подскажите, как это исправить?
Пример скрипта:
#!/bin/bash
function backup() {
    local include=("${!1}")
	local exclude=("${!2}")
    tar -cvpzPf /home/backup/backup.tar.gz "${include[@]}" "${exclude[@]}"
}

case "$1" in
    1)
        include=(/foo2 /foo3)
        exclude=(/bar2 /bar3)
        backup include[@] exclude[@]
    ;;
    2)
        include=(/foo /foo1)
        exclude=(/bar /bar1)
        backup include[@] exclude[@]
    ;;
    3)
        include=(/etc /sbin)
        backup include[@]
    ;;
esac

Пример схематичный, но общую суть показывает
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 1
CityCat4
@CityCat4
Жил-был у бабушки серенький троллик...
Проверять длины строк local_include и local_exclude и формировать из них одну строку, которую и подсовывать tar
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы