Как передать список аргументов в одну переменную, а не триггер SC2096?
В скрипте bash я определяю часто используемые параметры rsync, например:
opts="--checksum --delete --recursive --update --progress --omit-dir-times --no-perms"
Позже я использую это в нескольких вызовах rsync, например:
rsync $opts /from/here /to/there
Shellcheck жалуется на SC2086: "SC2086: двойная кавычка для предотвращения разбивки и разделения слов".
Но когда я цитирую $opts
как это:
rsync "$opts" /from/here /to/there
Rsync жалуется (конечно):
Ошибка rsync: синтаксис или ошибка использования (код 1)
Я понимаю, что могу отключить предупреждения о проверке оболочки, но, похоже, должен быть лучший способ.
Может быть, положить параметры в массиве?
opts=(--checksum --delete --recursive --update --progress --omit-dir-times --no-perms)
rsync "${opts[@]}" /from/here /to/there
Это идиоматично? Существуют ли более эффективные способы (мне всегда нужно искать синтаксис bash-массива), чтобы сделать работу rsync и проверку оболочки счастливой?