字符串,通配符和wget的数组

时间:2014-10-02 18:04:33

标签: arrays bash wildcard wget

我尝试做的是通过FTP直接从wget获取一些特定文件。我想使用字符串数组获取文件,并使用通配符与数组结合来选择获取哪些文件。

我的意思是:

我有一个数组

arr[0]=a

arr[1]=b

我使用wget连接目录dir中有一堆文件,我想要所有以a或b开头的文件(我的数组中的字符串)。

所以我尝试了以下内容:

wget $dir${arr[@]}*

它将获得以" a"开头的所有文件。但然后尝试连接到

"http://b*/". 

所以看起来如果我将目录添加到数组的每个元素它可以工作,但这不是一个理想的情况。

我目前正在使用Cygwin的Windows版本,但我很快就会转向一些Unix机器。

1 个答案:

答案 0 :(得分:1)

连接字符串和数组很少有所需的效果。改为使用for循环:

arr=(a b)
for var in "${arr[@]}"
do
  wget "$dir$var*"
done

您还可以通过参数扩展获得类似于您的代码的内容:

dir="ftp://host/dir/"
arr=(a b)
arr=( "${arr[@]/%/*}" )       # append asterisks
echo wget "${arr[@]/#/$dir}"  # prepend dir 

打印wget ftp://host/dir/a* ftp://host/dir/b*