Shell编程——变量测试语句

变量测试语句    :用于测试变量是否相等、是否为空、文件类型等。

格式    :text    测试条件        ;测试范围    :整数,字符串,文件

            字符串测试

                        test    str1=str2    测试字符串是否相等

                        test    str1!=str2    测试字符串是否不相等

                        test    str1    测试字符串是否不为空

                        test     -n    str1    测试字符串是否不为空

                        test    -z    str1    测试字符串是否为空      

              整数测试:

                        test    int1    -eq    int2    测试整数是否相等

                        test    int1    -ge    int2    测试int1是否>=int2

扫描二维码关注公众号,回复: 1664322 查看本文章

                        test    int1    -gt    int2    测试int1是否>int2

                        test    int1    -le    int2    测试int1是否<=int2

                        test    int1    -it    int2    测试int1是否<int2

                        test    int1    -ne    int2    测试整数 是否不相等

            文件测试:

                      test    -d    file    指定文件是否目录

                  

                       test    -f    file    指定文件是否常规文件

                       test   -x    file    指定文件是否可执行

                       test    -r    file    指定文件是否可读

                       test    -w    file    指定文件是否可写

                       test    -a    file    指定文件是否存在

                        test    -s    file    文件大小是否非0   

        变量测试语句一般不单独使用,一般作为if语句的测试条件,如:

                        if    test    -d    $1    then

                                    ...........

                            fi

          变量测试语句可用[]进行简化,如

                        test    -d    $1等价于    [-d    $1]

        条件if语句书写格式:

                            if    条件1    then

                                    命令1

                            elif    条件2   then

                                    命令2

                            else

                                    命令3

                            fi

案例:判断apache服务器是否启动:





流程控制语句:用于控制shell程序的流程

               exit语句:退出程序执行,并返回一个返回码,返回码为0表示正常退出,非0表示非正常退出。  eg:exit 0

      

多个条件的联合:

        -a:逻辑与,仅当两个条件都成立时,结果为真。

        -o:逻辑或,两个条件只要一个成立,结果为真。

for...done语句

格式:for    变量    in    名字表

        do

            命令列表

        done


拓展:

        awk命令应用

            awk -F域分隔符“命令” eg: -F: 表示指定:为分隔符

          示例:

                 1.检测系统中UID为0的用户

                        awk -F: '$3==0 {print $1}' /etc/passwd


                2.检测系统中密码为空的用户

                        awk -F:' length($2)==0 {print $1}'  /etc/shadow

        

select 变量in关键字

            do

                command 1

                       ..........

               command 2

         done

  select把关键字中的每一项做成类似表单,一交互的方式执行do和done之间的命令。


case...esac语句,格式:

            case    变量    in

                    字符串1)    命令列表1

                            .....................

                            .....................

                    字符串n)       命令列表n

                            .....................

                            .....................

                    esac



while语句,格式:

            while    条件

            do

                  命令

            done




until语句,格式:

            util    条件

            do    

                    命令

           done

until类似while循环,不同的是until是条件返回值为假是才继续执行。

        

       

跳出循环:break和continue

        break:跳出整个循环

       continue:跳出本次循环,进行下一次循环



shift指令:参数左移,每执行一次,参数序列顺次左移一个位置,$#的值减1,

                   用于分别处理每个参数,移出去的参数不可再用。



函数的应用

        函数的定义:

                 函数名(){

                                     命令序列

                                       }

                函数的调用:不带()

                 函数名    参数1    参数2........

函数中的变量:变量均为全局变量,没有局部变量

   函数中的参数: 调用函数时,可以传递参数,在函数中要用$1、$2....来引用

    

Shell脚本调试

         sh    -x    script    :这将执行该脚本并显示所有变量的值。

        

        sh    -n    script    :不执行脚本只是检查与法的模式,将返回所有语法错误。

        

       

如果想让普通用户对脚本能够修改,需要有那些权限

     

     

     如果需要该用户使用sh执行此脚本的时候,只需要赋予普通用户对脚本有r权限,对所在目录有rx权限

    如果需要该用户直接敲绝对路径执行此脚本的话,那么需要赋予普通用户对脚本有rx权限,对脚本目录有rx权限

     

猜你喜欢

转载自blog.csdn.net/weixin_42047611/article/details/80580518
今日推荐