Bash 大括号展开
发表于 2008 年 5 月 30 日
Bash *大括号展开* 用于在命令行或 shell 脚本中生成字符串。 大括号展开的语法由序列指定或由大括号“{}”内的逗号分隔的项目列表组成。 序列由两个句点“..”分隔的起始和结束项目组成。
一些示例以及它们展开后的结果
{aa,bb,cc,dd} => aa bb cc dd {0..12} => 0 1 2 3 4 5 6 7 8 9 10 11 12 {3..-2} => 3 2 1 0 -1 -2 {a..g} => a b c d e f g {g..a} => g f e d c b a如果大括号展开具有前缀或后缀字符串,则这些字符串包含在展开中
a{0..3}b => a0b a1b a2b a3b大括号展开可以嵌套
{a,b{1..3},c} => a b1 b2 b3 c
在 bash 中,可以采用多种方式实现计数循环,而无需大括号展开
# Three expression for loop:
for (( i = 0; i < 20; i++ ))
do
echo $i
done
# While loop:
i=0
while [[ $i -lt 20 ]]
do
echo $i
let i++
done
# For loop using seq:
for i in $(seq 0 19)
do
echo $i
done
for i in {0..19}
do
echo $i
done
for i in {a..z}
do
echo $i
done
当将多个长路径名传递给命令时,大括号展开也很有用。 代替输入
# rm /a/long/path/foo /a/long/path/bar您可以简单地输入
# rm /a/long/path/{foo,bar}
通过"set -B" 命令和 shell 的 "-B" 命令行选项启用大括号展开,并通过 "set +B" 和命令行上的 "+B" 禁用它。