上传到FTP时向并行函数传递多个参数



我正在使用ncftpput将图像上传到ftp服务器。该脚本的一个例子是

#                         destination.       origin
ncftpput -R ftp_server icon_d2/cape_cin ./cape_cin_*.png
ncftpput -R ftp_server icon_d2/t_v_pres ./t_v_pres_*.png
ncftpput -R ftp_server icon_d2/it/cape_cin ./it/cape_cin_*.png
ncftpput -R ftp_server icon_d2/it/t_v_pres ./it/t_v_pres_*.png

我正试图用GNUparallel并行化,但我很难将参数传递给ncftpput。我知道自己做错了什么,但不知怎么找不到解决办法。

如果我构建了我需要上传的数组

images_output=("cape_cin" "t_v_pres")
# suffix for naming
projections_output=("" "it/")
# remote folder on server
projections_output_folder=("icon_d2" "icon_d2/it")
# Create a list of all the images to upload 
upload_elements=()
for i in "${!projections_output[@]}"; do
for j in "${images_output[@]}"; do
upload_elements+=("${projections_output_folder[$i]}/${j} ./${projections_output[$i]}${j}_*.png")
done
done

然后我可以像这个一样串行上传

for k in "${upload_elements[@]}"; do
ncftpput -R ftp_server ${k}
done

当使用parallel时,我使用colsep来分隔参数

parallel -j 5 --colsep ' ' ncftpput -R ftp_server ::: "${upload_elements[@]}"

但CCD_ 6给出了一个错误,告诉我它没有理解传递的参数的结构。我做错了什么?

尝试:

parallel -j 5 --colsep ' ' eval ncftpput -R ftp_server ::: "${upload_elements[@]}"

这应该完全相同:

for k in "${upload_elements[@]}"; do
echo ncftpput -R ftp_server ${k}
done | parallel -j 5

最新更新