我想阅读一些可能(可能确实)包含文件中的通配符的模式列表
模式可能如下所示:
/vobs/of_app/unix/*
/vobs/of_app/bin/*
等
我的第一次尝试就是这样做:
old_IFS=$IFS
IFS=$'\n'
array=($(cat $file))
当模式与文件系统中的任何内容都不匹配时,这很好用,但是当它们匹配文件系统中的内容时,它们被扩展,因此不包含模式,我的数组包含指定目录的目录列表。这不好。
我接下来试着像这样引用
array=("$(cat $file)")
但是这会将文件的全部内容转储到数组的第0个元素中。
如何阻止它将通配符扩展到目录列表中,同时仍然将文件的每一行放入一个单独的数组元素中?
答案 0 :(得分:5)
Bash 4介绍了readarray
:
readarray -t array < "$file"
你已经完成了。
答案 1 :(得分:4)
array=()
while read line; do
array+=("$line")
done < "$file"