虽然此代码有效
#!/bin/bash
d="test_files/*"
for f in $d.{mp3,txt} ;do
do something
done
将{mp3,txt}放入变量中,请参阅下面的代码。
#!/bin/bash
a={mp3,txt}
d="test_files/*"
for f in $d."$a" ;do
do smoething
done
这里的输出是/ *。{mp3,txt}
将{mp3,txt}放入数组
a=({mp3,txt})
仅输出扩展名为* .mp3的文件。
答案 0 :(得分:1)
它不起作用,因为括号扩展发生在所有其他扩展之前。
来自man bash
:
支撑扩展在任何其他扩展之前执行,任何扩展 其他扩展特有的字符将保留在结果中。它 严格是文字的。 Bash不适用任何句法解释 在扩展的背景下或大括号之间的文本。至 避免与参数扩展冲突,字符串'$ {'不是 被认为有资格进行大括号扩展
您可以使用eval
来执行存储在变量中的大括号扩展,但不建议这样做。例如:
eval echo "$d.$a"