zoukankan      html  css  js  c++  java
  • Linux 脚本编写

    第一个shell脚本编写

    #!/bin/bash

    # 上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行;

    #定义变量:

    APP_BASE_PATH="/opt/app"

    #特殊变量:

    $1 传递给脚本或者函数的第1个参数   $2 依次类推

    NODE_NAME="$1"

    OP="$2"

    WARNAME="$3"

    WARFILE="$4"

    #使用变量

    只需要在一个定义过的变量前面加上美元符号 $ 就可以了, 另外,对于变量的{} 是可以选择的, 它的目的为帮助解释器识别变量的边界.

    SERVER_NAME="apache-tomcat-$NODE_NAME"

    SERVER_DIR="$APP_BASE_PATH/$SERVER_NAME"

    #将命令输出的值赋值给一个变量

    directory=`pwd`       #用反引号将命令引起来
    echo $directory

    tId=`ps -ef|grep "${SERVER_DIR}/bin/bootstrap.jar"|grep -v "grep"|awk '{print $2}'`

    if语句

    if[表达式] then 语句 fi

    if[表达式] then 语句 else 语句 fi

    条件判断
    if [ -z STRING ]  “STRING” 的长度为零则为真。  

         if [ -z ${WARNAME} ]; then
              echo "please specify war name!"
              echo "Usage: ./tom.sh NODE_NAME -w WARNAME /path/to/file.war"
              exit 0
        fi

      

        if [ ! -s ${WARFILE} ]   如果文件存在且大小不为0
        then  
            echo "file not exist: [${WARFILE}]"
            exit 0
        fi


    shell函数

    shell函数必须先定义再使用

    start() {
    echo -n $"Starting $SERVER_NAME: "
    tId=`ps -ef|grep "${SERVER_DIR}/bin/bootstrap.jar"|grep -v "grep"|awk '{print $2}'`
    if [ ${tId:=0} -ne 0 ]
    then
    echo "failure: it's already startup,please stop first.[Failed]"
    else
    ${SERVER_DIR}/bin/startup.sh
    sleep 2
    tId=`ps -ef|grep "${SERVER_DIR}/bin/bootstrap.jar"|grep -v "grep"|awk '{print $2}'`
    if [ ${tId:=0 } -eq 0 ]
    then
    echo "failure: See details on ${SERVER_DIR}/logs/catalina.out. [Failed]"
    else
    echo "success [OK]"
    fi
    fi
    }

    注意:1. 调用函数只需要给出函数名,不需要加括号。

    basename 命令用于创建基本文件名称
     targetWar=`basename ${WARFILE}`

         if [ "${targetWar%%.war*}" != "${WARNAME}" ]; then
             echo "ERROR: Target file name must equles '${WARNAME}.war.*'"
             echo " Please change file name and retry."
             exit 0
            else
            echo "war file path: ${WARFILE}"
        fi

    ${targetWar%%.war*}  把targetWar变量的值删掉匹配.war*的后缀的值

  • 相关阅读:
    父级和 子集 controller 之间的通讯
    ui-router(三)controller与template
    ui-router详解(二)ngRoute工具区别
    关于MySql全文索引
    Yii提供的Htmler助手checkboxList可自定义Checkbox输出格式
    添加和删除索引以及如何给中间表添加两个主键
    设置数据库及表的默认字符集
    保存数据的时候报类型错误的原因和解决方案
    金融经济
    YII获取刚插入数据的id主键
  • 原文地址:https://www.cnblogs.com/whx7762/p/9235000.html
Copyright © 2011-2022 走看看