if-then的高级特性
[[]]、[]都是用来测试( 测试分为数值比较、字符串比较、文件比价 )的,[[]]是关键字,里面可以用&&、||、<、>等类似C语言的语法;[]是bash内嵌的命令,也是用于测试的。[[]]通用性更好些。
(()),类似let,用于计算表达式。()可以把多个命令括起来,在一个子shell运行。
使用方法总结:
涉及高级数学运算使用(( ))
涉及多个命令的执行使用()
涉及高级语法测试使用 [[ ]]
涉及bash内嵌的命令使用 []
1、用于数学表达式的双尖括号
(( expression )) 允许将高级数学表达式放入比较中。test命令只允许在比较中进行简单的算术操作。
expression可以是任意的数学赋值或比较表达式。除了test命令使用的标准数学运算符,双尖括号命令符号还有:
val++ val-- ++val --val ! ~ ** << >> & | && ||
双尖括号在普通命令中使用是赋值功能。
(( val2 = $val1 ** 2 ))
2、用于高级字符串处理功能的双方括号
使用了test命令中采用的标准字符串进行比较。但是它提供了test命令未提供的模式匹配特性。可以定义一个正则表达式来匹配字符串值。如:
if [[ $USER == r* ]]