Você está processando os argumentos incorretamente na função do_Copy
que você definiu. Tome cuidado extra no processamento de argumentos posicionais no shell script. Seu código apenas deixa um argumento da matriz em seu comando final.
Você precisa usar $@
como a lista completa de argumentos em sua função como
do_Copy() {
(( "$#" )) || { printf 'insufficient args supplied' >&2 ; return 2; }
el="$1"; shift
PRIMSEC="$@"
rsync -az golden@"$LOCATION_1":"$dir3"/proc_"$el"_5.data "$PRIMSEC"/. || rsync -az golden@"$LOCATION_2":"$dir3"/proc_"$el"_5.data "$PRIMSEC"/. || rsync -az golden@"$LOCATION_3":"$dir3"/proc_"$el"_5.data "$PRIMSEC"/. || exit 1
}
e cite as variáveis ao chamar o array
export -f do_Copy
parallel -j 5 do_Copy {} "$PRIMARY" ::: "${PRIMARY_FILES[@]}" &
Depois de armazenar o $1
na função, com uma primeira chamada para shift
, o restante dos argumentos posicionais estará disponível em "$@"
, que você originalmente pretendia armazenar.