寻找一种在筛选目录中基于regex创建bash数组的方法。
例如,我会:
A. local -a arr=( "$1"/* ); arr=( "${arr[@]##*/} );
- Creates array of all contents of the path sent in $1.B. local -a arr=( "$1"/*"$2" ); arr=( "${arr[@]##*/}" );
- Creates array on filter expression in $2.(我不知道为什么*没有出现在B中的"$1"/*"$2"中,如果我把2 **s都放出来了!)
但它只适用于一个简单的表达式:示例'.pub‘-列出所有公钥。
但是,如果我发送‘z.*. zip’来查找以'z.‘开头的所有zip文件。不管用。
我甚至试着把*"$2"在arr=( "$1"/*"$2" )上拿出来。*"$2"没有出现!
你的帮助将不胜感激。
谢谢。
发布于 2014-08-11 18:46:10
全局不会在双引号中展开。你必须收回它:
local -a arr=( "$1"/*$2 ); 为了避免空白的问题,您可以首先使用IFS=""来抑制单词分裂,同时仍然对未引用的变量进行字词扩展。
下面是一个示例调用:
$ cat script
foo() {
local -a arr=( "$1"/*$2 );
echo "Matching files: " "${arr[@]}"
}
foo "." "z.*.zip"
$ ls
lobsters.png pelican.zip script z.bar.zip z.cow.txt
$ bash script
Matching files: ./z.bar.zip
$https://stackoverflow.com/questions/25249898
复制相似问题