Я пытаюсь создать shell-скрипт для управления моей синхронизацией с помощью s3-корзины.Вот что в моем сценарии:
#!/bin/bash
aws s3 sync $1 $2 $(for word in $(echo "$excludeconf"| tr ";" " "); do echo -n "--exclude \"$word\" "; done) $del --no-follow-symlinks $3
$1
- это источник $2
- это пункт назначения $3
- это еще один параметр, который передается (dryrun).$(word...
берет список файлов и папок $excludeconf
и создает с ними --exclude ...
.
Если я запусту скрипт, он ничего не исключит.
Если я добавлюecho
перед командой, приведенной выше, я получаю это:
aws s3 sync . s3://BUCKETNAME/FOLDERNAME/ --exclude .SOMEFILE --exclude "public/icon/*" --delete --no-follow-symlinks --dryrun
Если я скопирую эту команду и запусту ее вручную в терминале, она будет работать просто отлично.
Есть идеи?
К вашему сведению: я использую CentOS 7
Редактировать:
после некоторых тестов я обнаружил, что проблема заключается в глобализации: public / icon / * интерпретируется как public / icon/ folder1 public / icon / folder2 Если я попытаюсь установить noglob, он не будет работать .. ist, потому что он находится внутри $ (..)?