您的位置:68399皇家赌场 > 域名注册 > 【68399皇家赌场】《shell常用变量总结回顾》ENC

【68399皇家赌场】《shell常用变量总结回顾》ENC

发布时间:2019-05-03 21:49编辑:域名注册浏览(88)

    字符串测试

    l  格式1:

    [ 字符串1 = 字符串2 ]

    [ 字符串1 != 字符串2 ]

    l  格式2:

    [ -z 字符串 ]

     

    常用的测试操作符:

    =:字符串内容同样

    !=:字符串内容各异

    -z:字符串内容为空

     

    实例:

    [root@poll ~]# echo $LANG

    zh_CN.UTF-8

    [root@poll ~]# [ $LANG!="en.US" ] && echo "Not en.US"

    Not en.US

     

    break语句

    一) 测试文件状态

    4、shell的if与c语言if的作用上的差别

    shell if:0为真,接着走then。不援救整数变量直接if [ i ],必须是if [ i –ne 0 ];但接济字符串变量间接if,如if [ str ],假使字符串非0则走then。

    c语言if:正好相反,非0走then。协理变量直接if ( i )。

     

    Shell编制程序之规则语句

    学学目标:

    左右shell脚本标准测试

    支配if语句编制程序

     

    目录结构:

     68399皇家赌场 1

     

     

    [[email protected] /]# ll /etc/shadow ----------. 1 root root 1086 2月  26 22:38 /etc/shadow

    adder 12 34

    8、   条件表明式

    壹.文书表明式

    if [ -f  file]    即使文件存在
    if [ -d ...   ]    借使目录存在
    if [ -s file  ]    若是文件存在且非空 
    if [ -r file  ]    假诺文件存在且可读
    if [ -w file  ]    假使文件存在且可写
    if [ -x file  ]    借使文件存在且可实施

     

    2.平头变量表明式

    if [ int1 -eq int2]    如果int1等于int2   
    if [ int1 -ne int2 ]    即使不等于    
    if [ int1 -ge int2 ]    如果>=
    if [ int1 -gt int2 ]     如果>
    if [ int1 -le int2 ]     如果<=
    if [ int1 -lt int2 ]      如果<

     

    三.字符串变量表明式

    if  [ $a = $b]         假如a等于b,字符串允许使用赋值号做等号
    if  [ $a !=  $b ]      如果a不等于b
    if  [ -n $a ]             如果a非空(非0),返回0(true)  
    if  [ -z $a  ]            如果a为空
    if  [ $a]                 如果a非空,返回0(和-n类似)

    肆.-eq  -ne  -lt  -nt只好用于整数,不适用于字符串,字符串等于用赋值号=。同时鉴于shell里从未> 和< ,会被用作尖括号,整数条件表达式只有-ge, -gt,-le, lt。

    伍.=放在别的地方是赋值,放在if [ ]里正是字符串等于,shell里面未有==的,那是c语言的相当于。

    陆.= 用作等于时,其两边都必须加空格,不然失效!!!等号也是操作符,必须和其余变量,关键字,用空格格开(等号做赋值号时正好相反,两边不可能有空格!!!)

    例:

    $ vi test.sh
    echo "input your choice:"
    read var
    if [ $var="yes" ]
    then
      echo$var
      echo"input is correct"
    else
      echo$var
      echo "input error"
    fi

     

    $ sh test.sh
    input your choice:
    yes
    yes
    input is correct

    $ sh test.sh
    input your choice:
    n
    n
    input is correct 
    输错了也走then,都走then,为啥?
    因为if把$var="yes"连读成1个变量,而此变量为空,再次回到1,则走else。

     

    7.if  [  $ANS  ]等价于if [-n $ANS ]。假若字符串变量非空(then),空(else)。

     

    文本测试

    l  格式:【 操作符 文件或目录 】

    l  常用的测试操作符

    -d:测试是不是为目录(directory)

    -e:测试目录或文件是或不是留存(exist)

    -f:测试是或不是为文件(file)

    -r:测试当前用户是还是不是可读(read)

    -w:测试当前用户是或不是可写(write)

    -x:测试当前用户是还是不是可推行(excute)

     

    实例:

    [root@poll ~]# [ -d /etc ]

    [root@poll ~]# echo $?

    0

    [root@poll ~]# [ -d /etc/profile ]

    [root@poll ~]# echo $?

    1

    [root@poll ~]# [ -d /etc ]&&echo "yes"    //&&意思是目前推行成功载试行前面

    Yes

     

    [[email protected] /]# echo $?

    p $1=file2、$2=file3、$3=file4

    6、以函数作为if条件  (函数就一定于command,函数的亮点是其return值能够自定义)

    if    #以函数作为if条件
      getyn
    then    #函数reture值0为真,走then
      echo " your answer is yes"
    else    #函数return值非0为假,走else
      echo "your anser is no"
    fi

     

    原则测试概述

    l  对特定的口径进行推断,以决定哪些实践操作

    l  测试的点子

     方法一:test 条件表明式

     方法贰:【条件表明式】

    l  当条件建构即,测试语句的重临值为0,不然为其余数值

     

    标准测试的分类

    1、 文件测试

    二、 整数测试

    三、 字符串测试

    四、 逻辑测试

     

    [[email protected] ~]#

    伍.case多种分支语句

    三、[ ]&&  ——快捷if

    [ -f"/etc/shadow" ] && echo "This computer uses shadowpasswors"
    && 能够领略为then,若是左边的表明式为真则推行左侧的话语。

     

    If单分支语句

    l  If单分支语句结构

    if 条件测试操作

       then 命令连串

    fi

    if实践成功然后实践then。if未有实行成功,啥都不干

     

    利用案例:  

    p 前后三个表达式都成马上整个测试结果才为真,不然为假

    二、if 的三种口径表明式

    1.发令施行成功,等于再次回到0(举个例子grep ,找到相称);实践停业,重返非0(grep,没找到匹配)
    if
      command
    then

    if
      函数
    then

     

    二.表明式结果为真,则重临0,if把0值引向then
    if [ expression_r_r_r  ]    #方括号左右要有空格
    then 

     

    1. 表明式结果为假,则赶回非0,if把非0值引向then
      if test expression_r_r_r
      then

     

    If语句

    [[email protected] ~]# ./a.sh start start....

    if [ $RATE -gt 80 ]

    10、以  test 条件发挥式 作为if条件

    if test $num -eq 0 等价于 if[ $num –eq 0 ]
    test  表达式,没有[  ]

    if test $num -eq0                
    then
      echo "try again"
    else
      echo "good"
    fi

    $ man test
    [(1)                             UserCommands                            [(1)
    SYNOPSIS
           test EXPRESSION
           [ EXPRESSION ]
           [-n] STRING
                  thelength of STRING isnonzero          -n和直接$str都是非0条件
           -z STRING
                  thelength of STRING is zero
           STRING1 = STRING2
                  thestrings are equal
           STRING1 != STRING2
                  thestrings are not equal
           INTEGER1 -eq INTEGER2
                  INTEGER1is equal to INTEGER2
           INTEGER1 -ge INTEGER2
                  INTEGER1is greater than or equal to INTEGER2
           INTEGER1 -gt INTEGER2
                  INTEGER1is greater than INTEGER2
           INTEGER1 -le INTEGER2
                  INTEGER1is less than or equal to INTEGER2
           INTEGER1 -lt INTEGER2
                  INTEGER1is less than INTEGER2
           INTEGER1 -ne INTEGER2
                  INTEGER1is not equal to INTEGER2
           FILE1 -nt FILE2
                  FILE1is newer (modification date) than FILE2
           FILE1 -ot FILE2
                  FILE1is older than FILE2
           -b FILE
                  FILEexists and is block special
           -c FILE
                  FILEexists and is character special
           -d FILE
                  FILEexists and is a directory
           -e FILE
                  FILEexists                                 文件存在
           -f FILE
                  FILEexists and is a regular file     文件存在且是惯常文书
           -h FILE
                  FILEexists and is a symbolic link (same as -L)
           -L FILE
                  FILEexists and is a symbolic link (same as -h)
           -G FILE
                  FILEexists and is owned by the effective group ID
           -O FILE
                  FILEexists and is owned by the effective user ID
           -p FILE
                  FILEexists and is a named pipe
           -s FILE
                  FILEexists and has a size greater than zero
           -S FILE
                  FILEexists and is a socket
           -w FILE
                  FILEexists and is writable
           -x FILE
    FILE exists and is executable

    if双分支语句结构

    if 条件测试操作

          then 命令类别一

           else 命令系列二

    fi

    if施行成功,然后施行then。If未有进行成功,实行else

     

    实例:

     

    [root@poll ~]# cat a.sh

    #!/bin/bash

    #This is my first shell-script

    #2018-03-16

    read -p "请输入你的性别:" one

    if [ $one = 男 ]

    then

    echo "you are handsome"

    else

    echo "you are beautiful"

    fi

    [root@poll ~]# sh a.sh

    请输入你的性别:男

    you are handsome

    [root@poll ~]# sh a.sh

    请输入你的性别:女

    you are beautiful

     

    函数的使用

    #!/bin/bash

    七、ifcommand  等价于command if $?

    例1:

    $ vi testsh.sh
    #!/bin/sh
    if
      cat 111-tmp.txt | grep ting1
    then
      echo “found”
    else
      echo “no found”
    fi

     

    $ sh testsh.sh
    no found

     

    $ vi 111-tmp.txt
    that is 222file
    thisting1 is 111file

    $ sh testsh.sh
    thisting1 is 111file
    found

    例2:

    $ vi testsh.sh
    #!/bin/sh
    cat 111-tmp.txt | grep ting1
    if [ $? -eq 0 ]
    then
      echo $?
      echo “found”
    else
      echo $?
      echo “no found”
    fi

     

    $ sh testsh.sh
    1
    no found

     

    $ vi 111-tmp.txt
    that is 222file
    thisting1 is 111file

    $ sh testsh.sh
    thisting1 is 111file
    0
    found

     

    if多分支语句

    if 条件测试操作1

           then 命令体系壹

    elif 条件测试操作二

           then 命令种类贰

    else 命令体系三

    fi

    原则测试操作一施行成功,实行命令系列一;退步则执行标准测试二,条件测试二施行成功则推行命令种类二,战败则实践命令系列三。

    实例:

    [root@poll ~]# vi b.sh

    #!/bin/bash

    #This is …

    read -p " 请输入你的年华:" one

    if [ $one -le 18 ]

            then echo "you are young"

    elif [ $one -gt 18 ] && [ $one -le 60 ]

            then echo "you are so happy"

    else echo "you are old"

    fi

    [root@poll ~]# sh b.sh

     请输入你的岁数:12

    you are young

    [root@poll ~]# sh b.sh

     请输入你的年龄:1玖

    you are so happy

     

    接下去讲case语句

     

     

    格式:[表达式1]   操作符  [表达式2]  

     用途:测试特定的表达式是或不是建设构造,当规则创设刻,命令推行后的重返值为0,否则为别的数值

    101、if简化语句

    最常用的简化if语句

    1.  &&如果是“前面”,则“后面”
      [ -f /var/run/dhcpd.pid ] && rm/var/run/dhcpd.pid    检查文件是或不是留存,借使存在就删掉

    2.  ||  假如不是“前边”,则”前面”
      [ -f /usr/sbin/dhcpd ] || exit 0    核实文件是不是留存,如若存在就退出

    三.   用简化 if 和$壹,$二,$三来检验参数,不创制就调用help
    [ -z "$1" ] &&help                 若是第三个参数不设有(-z  字符串长度为0 )
    [ "$1" = "-h" ] &&help                        假如第三个参数是-h,就显示help

    平头测试

    l  格式:[ 整数1 操作符 整数2 ]

    l  常用的测试测试操作符

    -eq:等于(equal)

    -ne:不等于(not equal)

    -gt:大于(greater than)

    -lt:小于(lesser than)

    -le:小于或等于(lesser or equal)

    -ge:大于或等于(greater or equal)

     

    实例:

    [root@poll ~]# who |wc -l

    3

    [root@poll ~]# [ `who |wc -l` -gt 5 ] && echo too many

    [root@poll ~]# [ `who |wc -l` -gt 2 ] && echo too many

    too many

     

    [email protected] ~]# cat a.sh

     应用示范一:

    一、shell编制程序中原则表明式的行使

    if  #条件
    then
      Command
    68399皇家赌场,else
      Command
    fi   #别忘了这么些最终

    比如if语句忘了结尾fi
    test.sh: line 14: syntax error: unexpected end of fi

    逻辑测试

    l  格式1:

    [ 表达式1 ] 操作符 [ 表达式2 ] …

    命令1 操作符 命令2 …

    l  常用的测试操作符

    -a或&&:逻辑与,“而且”的乐趣,多个表明式都要实践成功

    -o或||:逻辑或,“大概”的情致,有2个进行成功就行了

    !:逻辑否

     

    实例:

    [root@poll ~]# [ -d /etc ] && [ -r /etc ] && echo "you can open it"

    you can open it

    [root@poll ~]# [ -f /etc ] || [ -d /home ] && echo ok

    Ok

     

         if条件语句   --单分支 当“条件创建“时实行相应的操作     if  条件测试命令          

    据悉变量的比不上取值,分别实施分化的一声令下操作

    伍、以多条command恐怕函数作为if条件

    echo –n “input:”
    read user

    if    #多条指令,这一个命令之间相当于“and”(与)
      grep $user /etc/passwd >/tmp/null
      who -u | grep $user
    then    #上边的命令都施行成功,重临值$?为0,0为真,运营then
      echo "$user has logged"
    else     #一声令下推行倒闭,$?为一,运维else                           
      echo "$user has not logged"
    fi 

     

    # sh test.sh
    input : macg
    macg     pts/0        May1515:55   .          2075(192.168.1.100)
    macg has logged
       
    # sh test.sh
    input : ddd
    ddd has not logged

     

    标准测试

    [[email protected] ~]#

    for TM in "Morning" "Noon" "Evening"

    玖、逻辑表明式

    1.逻辑非!                   条件表明式的反倒
    if [ ! 表达式 ]
    if [ ! -d $num]                        如若不存在目录$num

     

    贰.逻辑与–a                    条件表明式的并列
    if [ 表达式1  –a  表达式2 ]

     

    三.逻辑或-o                    条件表达式的或
    if [ 表达式1  –o表达式2 ]

    四.逻辑表明式补充表达

    ·        表明式与眼下的=  != -d –f –x -ne -eq -lt等合用

    ·        逻辑符号就家常便饭的接其余表明式,未有此外括号( ),就是并列
    if [ -z "$JHHOME" -a -d $HOME/$num ]

    ·        注意逻辑与-a与逻辑或-o很轻易和其余字符串或文件的演算符号搞混了

    #vi a.sh #!/bin/bash #a.sh NUM=`df | awk 'NR==5{print int($5)}'` if [ $NUM -gt 80 ] then  echo "Warning,DISK is full!" if

    while [ $# -gt 0 ]

       if条件语句--双分支 当“条件建构”、“条件不树立”时进行不一样的操作

    fi

    [[email protected] /]# [ -e /etc/passwd ]

    1. 多分支

    name zhangsan

    二. continue:在for、while、until等循环语句中,用于跳过循环体内剩余的言语,重新评定规范以便试行下一次巡回

    1

    壹.条件测试操作

    echo "start...."   ;; stop)  echo "stop......"  ;;

    #!/bin/bash

    常用的测试操作符    -a 或&&:逻辑与,“而且”的意思  

    do

    [[email protected] ~]# cat a.sh #!/bin/bash

    三) 字符串相比较

    [[email protected] ~]# cat c.sh

     -L:测试是或不是为标识连接(Link)文件

    -L:测试是还是不是为标志链接文件【link】

     -o或||:逻辑或,“或者”的意思

     echo "it is english"  ;; [0-9])  

     -w:测试当前用户是不是有权力写入(Write)

    常用的操作测试符   -eq:等于(Equal)   -ne:不等于(Not Equal)   -gt:大于(Greater Than)   -lt:小于(Lesser Than)   -le:小于或等于(Lessser or Equal)   -ge:大于或等于(Greater or Equal)

     例子:推断sshd是或不是在运营,若已运维则输出提醒音信,不然重新启航sshd服务

    用以跳出当前的循环体,实行循环体后的讲话。

     应用示范二:删除刚建构的二十一个帐户

     

    i=1

    0

    常用的测试操作符

    [[email protected] Packages]# echo $?

    done

    一、shell的口径测试  test命令

    1. 定义新的函数,二种艺术:

    常用的测试操作符  

    [a-z]|[A-Z])

    [[email protected] /]# [ -d /var/spool/ ]

    常用的测试操作符

    -e:测测试目录或文件是还是不是存在【exist】

    }

      [ 字符串1 != 字符串2 ]   

    #!/bin/bash

    [[email protected] ~]# ./c.sh 46 55

    7.shift迁移语句

    #echo $name

    Result=0

    #a.sh Result=0 while [ $# -gt 0 ]  do Result=`expr $Result $1`  shift  done  echo "The sum is: $Result"

    6.until循环语句

    restart)  echo "restart........"  ;; laod)   echo "laod......."  ;; status)  

    adder() {

    [ -e /media/cdrom/Server ]&& echo “YES”

    fi

    if 条件测试命令   if 3306端口是不是在监听状态  then 命令体系一  ==》      then mysqld 服务已运营  else 命令体系2                    else 运营mysqld服务 fi     fi

    #!/bin/bash

    [[email protected] ~]# ./c.sh 46 55

     -d:测试是还是不是为目录(Directory)

    0

     !=:字符串内容见仁见智,! 号表示相反的情致

    #!/bin/bash #c.sh adder(){ echo `expr $1 $2` }

    9.Shell函数用到

    本文由68399皇家赌场发布于域名注册,转载请注明出处:【68399皇家赌场】《shell常用变量总结回顾》ENC

    关键词: 68399皇家赌场 shell 脚本 if语句 shell编程

上一篇:Linux 常用命令

下一篇:没有了