符号$后的括号
跳转到“符号$后的括号”(1)${a} 变量 a 的值, 在不引起歧义的情况下可以省略大括号。
(2)$(cmd) 命令替换,和`cmd`效果相同,结果为 shell 命令 cmd 的输,过某些 Shell 版本不支持$()形式的命令替换, 如 tcsh。
(3)$((expression)) 和exprexpression效果相同, 计算数学表达式 exp 的数值, 其中 exp 只要符合 C 语言的运算规则即可, 甚至三目运算符和逻辑表达式都可以计算。
多条命令执行
跳转到“多条命令执行”(1)单小括号,(cmd1;cmd2;cmd3) 新开一个子 shell 顺序执行命令cmd1,cmd2,cmd3, 各命令之间用分号隔开, 最后一个命令后可以没有分号。
(2)单大括号,{ cmd1;cmd2;cmd3;} 在当前 shell 顺序执行命令cmd1,cmd2,cmd3, 各命令之间用分号隔开, 最后一个命令后必须有分号, 第一条命令和左括号之间必须用空格隔开。
对 {} 和 () 而言, 括号中的重定向符只影响该条命令, 而括号外的重定向符影响到括号中的所有命令。