Suponho que você também queira gerar o sinalizador --exclude
para cada nome inserido pelo usuário, ou seja, se um usuário inserir foo bar
, você deseja que a linha de comando tenha algo assim?
rsync ... --exclude foo --exclude bar ...
Desde que você marcou isso com bash , você pode usar read -a
para ler as palavras dadas pelo usuário diretamente para um < href="http://www.gnu.org/s/bash/manual/html_node/Arrays.html"> matriz e, em seguida, criar outra matriz para conter os parâmetros necessários para rsync
:
read -a dirs
excludes=()
for d in "${dirs[@]}" ; do
excludes+=(--exclude "$d")
done
rsync -RravhP "$Code" "${excludes[@]}" "$destination"
Sem -r
to read
você ainda pode escapar de nomes com espaços, digitando algo como aa bb\ cc
para obter os dois nomes aa
e bb cc
.