将一个数组作为参数传递给mget命令



我已经将要从SFTP服务器下载的所有文件名存储在一个文件中。此文件存储在我的本地机器中。

我正在尝试将文件的内容传递给一个数组。

是否可以将这个数组作为参数传递给mget?

类似mget $my_array,其中my_array有文件名列表。

首先要记住,mgetlftp command,所以它需要与lftp-c开关一起使用。

现在,考虑到数组包含文件的完整路径,您可以执行
lftp -c mget "${array[@]}"

作为匿名用户获取这些文件。

array=( "ftp://ftp.redhat.com/redhat/brms/5.3.1/SHA256SUM" "ftp://ftp.redhat.com/redhat/brms/5.3.1/brms-p-5.3.1.GA-src.zip" )
lftp -c mget "${array[@]}"

将为您获取两个文件。


为什么要双引号 ${array[@]} ?

当展开出现在双引号内时,每个参数展开成一个单独的单词,因此您可以处理带有空格的文件名的分词问题(尽管很少见)。


编辑(请记住这不是在lftp会话中,而是在localhost的bash会话中)

假设bash数组中只有如下的文件名

array=( "SHA256SUM" "brms-p-5.3.1.GA-src.zip" )

第一步:

array=( "${array[@]/#/ftp://ftp.redhat.com/redhat/brms/5.3.1/}" )
# We have just added the ftp server name + path before every file name in array
lftp -c mget "${array[@]}" # Download the files just like that

相关内容

  • 没有找到相关文章

最新更新