我如何扩展大批有一个通配符争论?例如,我想列出以a3
:- 声明a
为("a1" "a2" "a3*")
不起作用但("a1" "a2" a3*)
有效的所有文件(表达与细绳?),但是有更好的方法吗?
#/usr/bin/env bash
touch a1 a2 a31 a32
# list files starting with a3
a=("a1" "a2" "a3*") # fails
a=("a1" "a2" a3*) # works
ls "${a[@]}"
rm a1 a2 a31 a32
答案1
在 Bash 中,你可以在同一个“单词”中组合不同的引号,甚至不带引号的字符串,所以我可能会写a=("a1" "a2" "a3"*)
.这样,例如,如果a
最终被拉出为prefix=a
,您可以简单地执行a=("${prefix}1" "${prefix}2" "${prefix}3"*)
。