when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.
shell 中能遇到的括号很多,本次涉及的括号有 ()、(())、[]、[[]]、{},后续遇到更多的括号再补充
在入正题之前,先说说 $ 后的一些括号
${variable} 变量 variable 的值, 在不引起歧义的情况下可以省略大括号
$(command) 命令替换,和 `command` 效果相同,结果为 shell 命令 command 的输出,但是某些版本的 shell 不支持 $() 形式的命令替换, 如 tcsh
$((expression))、$[expression] 和 `expr expression` 效果相同,计算数学表达式 exp 的数值,其中 exp 只要符合 C 语言的运算规则即可,三目运算符和逻辑表达式都可以计算
单括号 ()
另开命令组
例:
1 | $ (ls) |
开启一个子 shell 独立运行小括号中的内容得到命令输出
例:
1 | $ a=$(command) |
command,得到命令输出赋值给变量 a初始化数组
例:
1 | $ array=(a b c d) |
双括号 (())
省去 $ 符号的算术运算
例:
1 | $ for((i=0;i<5;i++)); if (($i<5)); a=5; ((a++)) # 可将 $a 重定义为 6 |
C 语言规则运算
例:
1 | $ $((exp)) # exp 为符合 C 语言规则的运算符,表达式 |
跨进制运算
例:
1 | $ echo $((16#5f)) |
单中括号 []
字符串比较
整数比较
例:
1 | $ if [ $i -lt 5 ] |
数组索引
双中括号 [[]]
字符串比较
例:
1 | $ [[ hello == hell? ]] # 结果为真 |
逻辑运算符
例:
1 | $ if [[ $a != 1 && $a != 2 ]] |
退出码
大括号 {}
创建匿名函数
不会新开进程,括号内变量余下仍可使用最后一个也必须有分号第一个命令和左括号之间必须要有一个空格字符串操作(见 Shell 字符串截取和替换)
be yourself, everyone else is already taken.