括号分小括号(圆括号)、中括号(方括号)和大括号(花括号)。这些括号在Shell中分别有不同的作用,下表总结了这些括号的用途。
小括号 () 命令组(新建一个子Shell):(ls; pwd) 命令替换:$(pwd) 数组赋值:color=(red green blue) (()) 整数运算(整数扩展):((j=i*10)) for循环表达式:for ((i=0;i<10;i++))
中括号 [] 条件测试(Bash内部命令,等于test):if [ -d genome ] 正则表达式中的字符范围:grep "^[a-h]" at_protein.fa 数组下标:${color[0]} 整数运算:$[2*3] [[]] 条件表达式关键字:if [[ "$1" == "-h" || "$1" == "--help" ]]
大括号 {} 变量引用:${species} ${#genome} ${plant[*]} 命令组(内部组,其中的命令在当前Shell运行,不新建子Shell):{ ls; pwd; } 大括号扩展:{a,b}_{1,2,3}.txt 函数:func_name(){ command... }
其中小括号、中括号和大括号中的变量引用和命令组的用法我们前面已经学习了,可到相应的小节里查询。函数将在下一节学习。在这里我们只学习大括号扩展的用法。
通过下面的例子,我们就会理解大括号扩展的用法:
[peter@ibi98 brace]$ ls [peter@ibi98 brace]$ touch file_{a,b}_{1,2,3}.txt [peter@ibi98 brace]$ ls file_a_1.txt file_a_2.txt file_a_3.txt file_b_1.txt file_b_2.txt file_b_3.txt
大括号里面逗号分割的内容会分别与大括号外面的内容组合起来,这样利用多个大括号表示多种组合方式,可以方便地一次处理多个文件。