在bash shell中最近新增了两个比较新的功能,它们提供了可以在if-then语句中使用的高级公共:双括号表示数学表达数、双方括号表示高级字符串处理函数。
双圆括号命令允许在比较中包含高级数学公式。test命令只允许在比较中进行简单的算术操作。双圆括号命令提供更多的数学符号,这些符号时其他语言程序员习惯使用符号。圆括号命令的格式是:(( expression ))。
术语expression可以是任何的数学赋值表达式或数学比较表达式。除了test命令使用的标准数学操作符,双括号命令中可以使用的其他操作符列表。
PS:在双圆括号内的表达式中,不必转义大于号。这是双圆括号提供的另一个高级功能。
#!/bin/bash #在if-then语句中使用双圆括号命令 val=8 bit=8 (( val++ )) if(( $val== 9 ));then echo "val后增量"$val fi (( val-- )) if(( $val== 8 ));then echo "val后减量"$val fi if(( ++$val==8 ));then echo "val前增量"$val fi if(( --$val==8 ));then echo "val前减量"$val fi if(( $val!=8 ));then echo "val逻辑否定"$val else echo "this is 逻辑否定 $val" fi if(( $val **2 ==64 ));then (( v1=$val **2 )) echo "val取幂"$v1 else echo "this is $val" fi if(( $val **2 ==64 )) || (( $bit<<1 ==16 ));then (( v1=$val **2 )) (( b1=$bit<<1 )) echo "val取幂"$v1 echo "bit左移"$b1 else (( v1=$val **2 )) (( b1=$bit<<1 )) echo "This is val取幂"$v1 echo "This is bit左移"$b1 fi if(( $val >8 )) && (( $bit>>1 ==8 ));then (( v1=$val **2 )) (( b1=$bit<<1 )) echo "val取幂"$v1 echo "bit右移"$b1 else (( v1=$val **2 )) (( b1=$bit<<1 )) echo "This is val取幂"$v1 echo "This is bit右移"$b1 fi if(( $bit & 2 ==0 ));then (( b1=$bit & 2 )) echo "按位与"$b1 fi if(( $bit | 2 ==10 ));then (( b1=$bit | 2 )) echo "按位或"$b1 fi
WEL测试 认证博客专家 软件测试 性能测试 接口测试 一线的测试工作人员。喜欢专研并应用新的技术,用于提升测试效率。擅长:测试新人培训、测试进阶、接口测试、性能测试、问题定位、自动化、数据测试、渗透测试! 如果对测试感兴趣或者遇到一些难题,可以加我微信:Wel_Test,加时填好备注!