zoukankan      html  css  js  c++  java
  • if判断

    eq 等于
    ne 不等于
    ls 小于 
    gt 大于
    le 小于等于
    ge大于等于
    == 等于
    -o 或者 
    -a 并且
    elif 再或者
    else 否则
    
    $# 是传给脚本的参数个数
    $0 是脚本本身的名字
    $1 是传递给该shell脚本的第一个参数
    $2 是传递给该shell脚本的第二个参数
    $@ 是传给脚本的所有参数的列表
    $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
    $$ 是脚本运行的当前进程ID号
    $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
    
    
    functions这个脚本是给/etc/init.d里边的文件使用的,提供了一些基础的功能,看看里边究竟有些什么。首先会设置umask,path,还有语言环境,然后会设置success,failure,warning,normal几种情况下的字体颜色。下面再看看提供的重要方法:
    
    checkpid:检查是否已存在pid,如果有一个存在,返回0(通过查看/proc目录)
    daemon:启动某个服务。/etc/init.d目录部分脚本的start使用到这个
    killproc:杀死某个进程。/etc/init.d目录部分脚本的stop使用到这个
    pidfileofproc:寻找某个进程的pid
    pidofproc:类似上面的,只是还查找了pidof命令
    status:返回一个服务的状态
    echo_success,echo_failure,echo_passed,echo_warning分别输出各类信息
    success,failure,passed,warning分别记录日志并调用相应的方法
    action:打印某个信息并执行给定的命令,它会根据命令执行的结果来调用 success,failure方法
    strstr:判断1是否含有2
    confirm:显示 “Start service $1 (Y)es/(N)o/(C)ontinue? [Y]”的提示信息,并返回选择结果
    
    [root@web01 ~]# vim ping.sh +9
    #!/bin/bash
    . /etc/init.d/functions
    
    ping -c 1 -w 1 "$1"  &>/dev/null
    if [ $? -eq 0 ];then
            action "$1" /bin/true
    else
            action "$1" /bin/false
    fi
    
    [root@web01 ~]# mv ping.sh /usr/bin/p
    [root@web01 ~]# chmod u+x /usr/bin/ping.sh
    [root@web01 ~]# p 10.0.0.7
    10.0.0.7                                              [  OK  ]
    
    #修改打印信息
    #!/bin/bash
    . /etc/init.d/functions
    
    ping -c 1 -w 1 "$1"  &>/dev/null
    if [ $? -eq 0 ];then
            echo $1:网络正常
    else
            echo $1:网络不通
    fi
    
    [root@web01 ~]# p 10.0.0.31
    10.0.0.31:网络正常
    
    
    
    #!/bin/bash
    
    id nginx &>/dev/null                 # echo $? 结果转化为数字
    if [ $? -ne 0 ];then
    	useradd nginx -s /sbin/nologin -M
    	echo nginx用户不存在,正在创建...   
    eles
    	echo nginx用户已存在 			
    fi
    
    
    

    命令行判断指定路径下的文件或者目录是否存在

    [root@oldboy opt]# [ -d /op ]&& echo 存在||echo 不存在  
    不存在
    [root@oldboy opt]# [ ! -d /op ]&& echo 不存在||echo 存在  
    不存在
    
    [ -d /op ] || xx  前面不成功,后面执行xx,,,成功了就啥也不干
    [ -d /op ] && xx  前面成功了,后面执行xx,,,不成功就啥也不干
    

    运行脚本里判断指定路径下的文件或者目录是否存在

    #!/bin/bash
    if [ -d /root ];then  
            echo 存在
    else
            echo 不存在
    fi
    
    #!/bin/bash
    if [ -f /syy ];then
            echo 存在
    else
            echo 不存在
    fi
    

    命令行里使用if判断

    [root@lb01 ~]# if [ -d /etc ];then echo 1 ;else echo 2;fi
    1
    [root@lb01 ~]# if [ -d /etcc ];then echo 1 ;else echo 2;fi
    2
    
    
    #判断/syy 目录或文件是否存在
    [root@oldboy ~]# vim a.sh     
    #!/bin/bash
    . /etc/init.d/functions
    
    if [ -d /root/syy ];then
            action '该目录已存在' /bin/true
    else
            action '该目录不存在' /bin/false
    fi
    [root@oldboy ~]# sh a.sh 
    该目录已存在                                               [  OK  ]
    

    跳板机

    #自动切换终端脚本,脚本不认识别名(ll),判断里面不能接 >/dev/null,不然会夯住
    vim QH.sh
    #脚本1
    #!/bin/bash
    cat <<EOF
    +------------+
    |1.连接web01 |
    +------------+
    |2.连接web02 |
    +------------+
    |3.连接nfs   |
    +------------+
    |4.连接backup|
    +------------+
    EOF
    read -p '请输入想要连接的虚拟机的序号:' num
    
    if    [ $num -eq 1 ];then
    	ssh root@172.16.1.7
    elif  [ $num -eq 2 ];then
    	ssh root@172.16.1.8 
    elif  [ $num -eq 3 ];then
     	ssh root@172.16.1.31 
    elif  [ $num -eq 4 ];then
    	ssh root@172.16.1.41 
    fi
    
    # if    [ $num -eq 1 -o $num == web01 ];then	不能这样写
    
    #脚本2
    #!/bin/bash
    cat <<EOF
    +------------+
    |1.连接web01 |
    +------------+
    |2.连接web02 |
    +------------+
    |3.连接nfs   |
    +------------+
    |4.连接backup|
    +------------+
    EOF
    read -n1 -p "请输入想要连接的虚拟机的序号: " answer
    case $answer in
    1)
          ssh root@172.16.1.7;;
    2)
          ssh root@172.16.1.8;;
    3)
          ssh root@172.16.1.31;;
    4)
          ssh root@172.16.1.41;;
    esac
    exit 0
    
    #脚本3
    vim jumpserver.sh
    #!/bin/bash
    #jumpserver
    lb01=172.16.1.5
    lb02=172.16.1.6
    web01=172.16.1.7
    web02=172.16.1.8
    web03=172.16.1.9
    nfs=172.16.1.31
    backup=172.16.1.41
    db01=172.16.1.51
    db02=172.16.1.52
    db03=172.16.1.53
    db04=172.16.1.54
    m01=172.16.1.61
    zabbix=172.16.1.71
    
    cat <<EOF
            +-------------------------+
            |     1) lb01             |
            |     2) lb02             |
            |     3) web01            |
            |     4) web02            |
            |     5) web03            |
            |     6) nfs              |
            |     7) backup           |
            |     8) db01             |
            |     9) db02             |
            |     10) db03            |
            |     11) db04            |
            |     12) m01             |
            |     13) zabbix          |
            |     h) help             |
            +-------------------------+
    EOF
    read -p 'Please Input Number: ' num
    
    if [ $num -eq 1 ];then
      ssh root@$lb01
    elif [ $num -eq 2 ];then
      ssh root@$lb02
    elif [ $num -eq 3 ];then
      ssh root@$web01
    elif [ $num -eq 4 ];then
      ssh root@$web02
    elif [ $num -eq 5 ];then
      ssh root@$web03
    elif [ $num -eq 6 ];then
      ssh root@$nfs
    elif [ $num -eq 7 ];then
      ssh root@$backup
    elif [ $num -eq 8 ];then
      ssh root@$db01
    elif [ $num -eq 9 ];then
      ssh root@$db02
    elif [ $num -eq 10 ];then
      ssh root@$db03
    elif [ $num -eq 11 ];then
      ssh root@$db04
    elif [ $num -eq 12 ];then
      ssh root@$m01
    elif [ $num -eq 13 ];then
      ssh root@$zabbix
    fi
    
  • 相关阅读:
    HTML5中的FileSystem API的一个问题(或者是BUG)
    TSQL入门(二)——创建表
    javascript绘制谢尔宾斯基三角形(Sierpinski triangle)
    VS2010操作SQL SERVER CE 4.0数据库
    TSQL入门(三)——增删改(INSERT、DELETE、UPDATE)
    IE6警告框
    TSQL入门(二)——创建表
    TSQL入门(一)——创建数据库
    TSQL入门(一)——创建数据库
    javascript绘制谢尔宾斯基三角形(Sierpinski triangle)
  • 原文地址:https://www.cnblogs.com/syy1757528181/p/12813846.html
Copyright © 2011-2022 走看看