linux shell脚本 条件语句

test

        测试文本的表达式 是否成立

        格式: test    条件表达式

        格式: [    条件表达式    ]   ([] 内要空格 ,不然不生效)

        如何测试?

               [ 操作符  文件或目录 ]

                echo $?

                返回值是0 正确,返回值非0 不正确

        操作符:

                -d  测试是否为目录

                -a 测试目录或文件是否存在

                -e 测试目录或文件是否存在(推荐使用这个,-a有bug)

                -f  测试是否是文件

                -r  测试当前用户是否有权限读取

                -w 测试当前用户是否有权限写入

                -x 测试当前用户是否有权限执行

                -L 测试是否是软连接文件

比较整数数值

                [整数1    操作符     整数2 ] 

                echo $?

                0正确   非0 不正确

               操作符

                -eq       等于

                -ne       不等于

                -gt        大于

                -lt         小于

                -le        小于等于

                -ge        大于等于

字符串比较

        常用的测试操作符

               =        字符串内容相同

               !=        字符串内容不同,!表示相反的意思

               -z        字符串内容是否存在

               -n        字符是否存在

        格式

              [ 字符串1 操作符  字符串2  ] 

               echo $?

                0正确  非0不正确

逻辑测试

        常见条件

              -a或&&:  逻辑与,"而且"的意思 两边条件为真才为真

              -o或 | |:逻辑或,"或者"的意思 有一个条条件为真就为真

              !:逻辑否

      && 与

        a && b         同时满足a和b命令的要求,才会返回正确,有一方不满足,便是假

      | | 或

        a | | b           只要有一个结果为真,结果比为真。a结果为真,总结果肯定为真,

                            因此不需要执行b。a结果为假,b就需要进行判断,才能得到真正的结果

       a && b | | c    a如果为真,则执行b 就不会执行c   a如果为假,就不会执行b,就需要执行c

双中括号

                [ [ 表达式 条件  表达式 ] ]

                条件         ==        通配符

                                =~        正则表达式

() {}        

            (a,b....) 和 {a,b....}  都可以将命令组合在一起,批量执行

           ()会开启子进程  {}不会开启子进程

if语句

             分支结构

                 单分支

                      if 判断条件;

                      then       

                      条件为真的分支代码

                      fi

                双分支

                      if 判断条件;

                        then

                       条件为真的分支代码

                        else

                        条件为假的分支代码

                        fi

                多分支

                       if 判断条件1;

                         then

                        条件1为真的分支代码

                       elif 判断条件2;

                          then

                        条件2为真的分支代码

                       elif 判断条件3;

                          then

                        条件3为真的分支代码

                        ....

                        else

                           以上条件都不符合,则执行的代码

                        fi

case语句

        格式

             read  -p    i

            case  $i    in

               PAT1)        

                   分支1

                    ;;

               PAT2)

                   分支2

                   ;;

                ...

                *)

                ;;

                easc

        case支持glob风格的通配符:
                        * 任意长度任意字符
                        ? 任意单个字符
                        [0-9] 指定范围内的任意单个字符
                        |   或者,如: a|b               

echo

          echo   "abcdfg"  

             abcdfg

            输出abcdfg

        选项

               -n  不换行输出

               -e   表示输出转义符

            

" " 内的可用选项

\r 光标移至行首,并且不换行
\s 当前shell的名称,如bash
\t 插入Tab键,制表符
\n 输出换行
\f 换行,但光标仍停留在原处
\ 表示插入"\"本身转义
\b 表示退格 不显示前一个字符
\c 抑制更多的输出或不换行

                            

        

                  

     

你可能感兴趣的:(linux,运维,服务器)