{0[7-9],1*,2*} 的含义

{0[7-9],1*,2*} 的含义

下面的命令会做什么以及会给出什么输出?

echo "{$begin_dt/{0[7-9],1*,2*},$dates/*,$next_dt/0[0-6]}"

哪里$begin_dt$next_dt是日期。

答案1

问题标题中的字符串与问题本身中的字符串略有不同。也就是说,后者用引号引起来,而标题中的则没有。

外部报价,大括号{...}展开到大括号旁边的字符串,并连接到大括号内所有以逗号分隔的字符串。 iestring{this,that}扩展为stringthisand stringthat,使您免于重复公共部分。

之后会发生文件名通配,因此类似的内容dir/{0[7-9],1*,2*}将扩展为dir/0[7-9]dir/1*然后dir/2*所有这些都将扩展为匹配的文件名。

如果文件名是两位数的月份中的天数,则它将匹配数字 07 到 29。(但不匹配 30 或 31!)

示例中的外部大括号组将类似地扩展。

里面引号,大括号没有什么特别的,文件名扩展也没有完成,所以扩展的只是变量。

在 Bash 和其他具有大括号扩展的 shell 中,这不是 POSIX sh 的功能。

相关内容