Я предполагаю, что вы хотите сгенерировать флаг --exclude
для каждого имени, введенного пользователем, т.е. если пользователь вводит foo bar
, вы хотите, чтобы командная строка имела что-то вроде этого?
rsync ... --exclude foo --exclude bar ...
Поскольку вы пометили это с помощью bash, вы можете использовать read -a
для чтения слов, заданных пользователем, прямо в массив, а затем построить другой массив, содержащий необходимые параметры для rsync
:
read -a dirs
excludes=()
for d in "${dirs[@]}" ; do
excludes+=(--exclude "$d")
done
rsync -RravhP "$Code" "${excludes[@]}" "$destination"
Без -r
до read
вы все равно можете экранировать имена пробелами, введя что-то вроде aa bb\ cc
, чтобы получить два имени aa
и bb cc
.