Прежде всего помните, что mget
является lftp command
, поэтому его необходимо использовать с переключателем -c
lftp
.
Теперь, учитывая, что массив содержит полный-путь к файлам, вы могли бы сделать
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[@]}
?
Когда расширение происходит в двойных кавычках, каждый параметр расширяется до отдельного слова, поэтому вы можете разрешать разбиение слов на имена файлов с пробелами в них (хотя и редко).
Edit (Remeber это не в сеансе lftp
но сеанс 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
Возможный дубликат [Передача массивов в качестве параметров в bash] (http://stackoverflow.com/questions/1063347/passing-arrays-as-parameters-in-bash) – Inian
что-то вроде 'mget '$ {my_array [@]}" '? – Inian
@ Иниан: не совсем дубликат или не так ли? – sjsam