Bash - 将文件中的通配符模式读取到数组中

时间:2014-04-24 22:43:43

标签: arrays bash wildcard

我想阅读一些可能(可能确实)包含文件中的通配符的模式列表

模式可能如下所示:

/vobs/of_app/unix/*
/vobs/of_app/bin/*

我的第一次尝试就是这样做:

old_IFS=$IFS
IFS=$'\n'
array=($(cat $file))

当模式与文件系统中的任何内容都不匹配时,这很好用,但是当它们匹配文件系统中的内容时,它们被扩展,因此不包含模式,我的数组包含指定目录的目录列表。这不好。

我接下来试着像这样引用

array=("$(cat $file)")

但是这会将文件的全部内容转储到数组的第0个元素中。

如何阻止它将通配符扩展到目录列表中,同时仍然将文件的每一行放入一个单独的数组元素中?

2 个答案:

答案 0 :(得分:5)

Bash 4介绍了readarray

readarray -t array < "$file"

你已经完成了。

答案 1 :(得分:4)

array=()
while read line; do
    array+=("$line")
done < "$file"