特殊符号: [[ "string" =~ pattern ]]"=~": 用于判断string和右边的正则表达式pattern是否匹配(string是否包含pattern正则表达式)。 1、${ } 与 $$与${ }都是用来引用变量的。 ${ }: 指定变量边界,也可用于对字符串变量进行截取等处理 2、[ ]与test [ ] 是test命令的另一种形式,用于判断某个表达式的返回值是0或者非0,常用于if命令的判断条件test $a == "linux" 等于 [ $a == "linux" ] if test $a == "linux"; then echo "i am linux" elif [ $a == "java" ];then echo "i am java" fi 注意 : "[" 后和 "]" 前都需要有空格,并且 "==" 两边也都要有空格 3、$() 用来做命令替换用,一般用于将命令返回的结果传递给变量a=$(ls /home/hadoop101/) a=ls /home/hadoop101/ a 保存的是上述命令的返回值,即一个目录列表 4, $[ ] 和 $(( )) $[]和$(())的作用一样,都是进行数学运算的,支持 */%,并且在 $[ ] 和 $(( )) 中使用变量不需要$引用,可以直接使用变量名echo $[2+7] a=3;b=4;echo $[$a+$b] echo $((2+7)) a=3;b=4;echo $(($a+$b)) a=3;b=4;echo $((a+b)) expr命令和bc命令进行数学运算echo expr 3 + 4 echo expr 3+4 echo expr 3 * 4 注意:+-/ 的左右各需要一个空格,expr 3+4 则无法正确运算,另外使用/需要转义字符,加减不需要 bc是linux的计算器,是交互式命令,但是bc支持从标准输入中读取参数及逆行运算,但是bc不支持从命令行中读取运算式echo "3+4"|bc 5、[[ ]] [[ 是 bash 程序语言的关键字。 [[ ]] 结构比 [ ] 结构更加通用。 [[ 和 ]] 之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生参数扩展和命令替换。 支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式。 字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。[[ ]] 中匹配字符串或通配符,不需要引号。 使用 [[ … ]] 条件判断结构,而不是 [ … ],能够防止脚本中的许多逻辑错误。比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。比如可以直接使用if [[ $a !=1 && $a != 2 ]], 如果不适用双括号, 则为if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ]。 bash把双中括号中的表达式看作一个单独的元素,并返回一个退出状态码。 [root@linuxforliuhj ~]# cat a.txtif [ $1 > 5 ];then echo "$1的值大于5" else echo "$1的值小于5" fi 如果使用[[ ]] 的话则可以去掉转义字符if [[ $1 > 5 ]];then echo "$1的值大于5" else echo "$1的值小于5" fi 支持&&和||,但是仅仅支持==和!=的连接判断 也可以使用&&或者||,但是只支持==或者!=的连接if [[ $a != 3 && $a != 10 ]];then echo "hello i am linux" fi 如果不使用[[ ]]的话则需要这样写:if [[ $a != 3 -a $a != 10 ]];then echo "hello i am linux" fi 或者if [[ $a != 3 ]&&[ $a != 10 ]];then echo "hello i am linux" fi [[ ]]在比较字符串支持正则匹配和通配符匹配 在[[ ]]中进行 == 或者 != 比较时可以进行通配符匹配 案例1:if [[ linux == l?nu? ]];then echo "i am linux" else echo "i am not linux" fi 案例2:if [[ linux == li* ]];then echo "i am linux" else echo "i am not linux" fi 在[[ ]]中可以使用 =~ 进行正则匹配 案例1:if [[ linux =~ ^li ]];then echo "i am linux" else echo "i am not linux" fi 案例2:if [[ linux =~ ^li[abn]ux ]];then echo "i am linux" else echo "i am not linux" fi 6、(( )) (( )) 的主要用法大概有三个: 与$结合使用进行数学运算$(( )) 在for循环命令中控制循环,类似于c语言 改变变量的值,且不需要$引用for((i=1;i<10;i++)) do echo "this is $i" done i=0 while [ $i -le 10 ] do echo "this is $i" ((i++)) done 或者i=0 while [ $i -le 10 ] do echo "this is $i" ((i=i+1)) done