linux基础知识----Just for Tencent(sh

2017-08-20  本文已影响0人  时光小偷_hansen

1. if-then 语句

基本格式:

if command   //若command命令执行完毕之后的状态码返回值为0,则执行then中的命令,否则                             不执行then中的命令

then  

          commands

fi

if command;then          //另一种格式

    commands

fi

else 格式

if  command;then     //如果command中命令返回的退出状态码为0,则执行then

      commands

else 

      commands    //如果command中命令返回的退出状态码为非0,则执行else

fi

elif 格式

if command;then

   commands

elif  command;then

      commands

elif  command;then

        commands

else

    commands

fi

2. test命令

if  test condition;then      //如果condition条件不写,则以非零状态码退出,执行else中的                                                              commands

         commands

else

            commands

fi 

(1) my_variable="full";  test  $my_variable  //若变量my_variable为空,则退出码为非0,若有内容,则为0

方括号的表达形式

if  [ condition ]    //使用方括号来代替test,但是在方括号的两边必须具有空格

then

     commands

fi

通常test可以测试三类条件

(1)数值比较

n1  -eq n2      //是否相等,相等,则退出码为0

n1  -ge   n2     //是否大于或等于

n1  -gt    n2    //是否大于

n1   -le    n2    //是否小于等于

n1   -lt    n2   //是否小于

n1    -ne   n2   //不等于

其中n1 和  n2 可以使用变量,例如有变量var  ,可以  $var   -ne   n2  这样使用,这种比较不能使用在浮点数中

(2)字符串比较

          str1 = str2    //比较是否相等,通过ASCII表来比较,因此会比较标点,大小写等

          str1 != str2   //比较是否不相等  等号两边留空格,也可以使用变量的方式

          str1 \> str2   //比较大于,大于号需要转义,避免被shell当成重定向符

          str1 \< str2 //比较小于,小于号需要转移,避免被shell当成重定向符

            -n  str1    //测试str1的长度是否为非0

           -z  str1    //测试长度是否为0

   if [ -z  $var  ]                    //在这里,若var未被定义,这里也是可以执行的,只是var的长度为0,                                              故-z  $var的退出码为0

(3)文件比较

-d  file              //检查file是否存在且是一个目录

-e file            //检查file 是否存在

-f  file             //检查file是否是一个文件

-r  file              //检查file  是否存在并可读

-s  file             //检查file是否存在并非空

-w  file           //检查file 是否存在并可写

-x    file       //检查file是否存在并可执行

-O   file          //检查file是否存在并属于当前用户

-G  file            //检查file是否存在并且默认组与当前用户相同

file1  -nt    file2  检查file1是否比file2新

file1   -ot   file2  检查file1是否比 fil2旧

3.复合条件测试

[ condition1 ]  && [ condition2 ]

[ condition1 ]   ||    [ condition2 ]     

4.if-then 的高级特性

针对数学运算符的高级特性

((   expression  ))  ,支持除了上面以外的其他运算符

val++        后增

val--         后减

++val     先增

--val      先减

!        逻辑求反

~       位求反

**     幂运算

<<    左位移

>>   右位移

&   位布尔求反

|    位布尔或

&&   逻辑和

||    逻辑或

针对字符串比较的高级特性

[[  expression  ]],两边有空格

5.case命令

case  variable in

pattern1 | pattern2) commands1;;

pattern3) commands2;;

*) commands;;

上一篇下一篇

猜你喜欢

热点阅读