zoukankan      html  css  js  c++  java
  • linux脚本之一个程序调用另一个程序

      一、如何执行

    ./adapter.sh 20211121 'importdata.sh|!DATE'

      adapter.sh:适配器脚本

      20201121:适配器脚本参数1,执行日期

      'importdata.sh|!DATE':适配器脚本参数2,具体需要执行的脚本和参数,以|分隔,多个参数也以|分隔

      二、有啥好处

      为了练手。。。或者说在某些情况下调用方便,无论多少个参数拼接|就行了,在适配器脚本中调用解析执行即可。

      三、具体脚本

    #!/bin/bash
    if [ $# -lt 2 ] || [ $1 = "" ] || [ $2 = "" ]
    then
     echo "传入参数不符合要求"
     exit 1
    fi
    
    JOB_DATE=$1
    JOB_PARA_LIST=$2
    
    YEAR=`echo $JOB_DATE|cut -c 1-4`
    MONTH=`echo $JOB_DATE|cut -c 5-6`
    DAY=`echo $JOB_DATE|cut -c 7-8`
    
    DATE=`date '+%Y%m%d'`
    DATE4=`echo $DATE|cut -c 1-4`
    DATE6=`echo $DATE|cut -c 1-6`
    DATE8=$DATE
    
    CMD=`echo $JOB_PARA_LIST|sed 's/|/ /g'|sed 's/!DATE4/'${DATE4}'/g'|sed 's/!DATE6/'${DATE6}'/g'|sed 's/!DATE8/'${DATE8}'/g'|sed 's/!DATE/'${DATE8}'/g'` 
    JOB_PRG=`echo $CMD|awk '{print $1}'`
    
    ADAPTER_LOGFILE=/usr/local/myroom/script/log/adapter_${JOB_DATE}.log
    
    JOBPRG_LOGPATH=/usr/local/myroom/script/log/$DATE6
    JOBPRG_LOGFILE=${JOBPRG_LOGPATH}/${JOB_PRG}${DATE8}.log
    SHPATH=/usr/local/myroom/script
    
    echo "适配器调用脚本命令: "$CMD 2>&1|tee -a ${ADAPTER_LOGFILE}
    
    it=1
    while [ ${it} -lt 100 ]
    do 
      if [ ! -d ${JOBPRG_LOGPATH} ]
      then
        mkdir -p ${JOBPRG_LOGPATH}
        retcode=$?
        if [ $retcode -eq 0 ]
        then
          echo "adapter第"${it}"次创建日期目录成功:" 2>&1|tee -a ${ADAPTER_LOGFILE}
          break
        else
          echo "adapter第"${it}"次创建日期目录失败:" 2>&1|tee -a ${ADAPTER_LOGFILE}
          it=`expr ${it} + 1`
          sleep 1
        fi
      else
        break
      fi
    done
    
    if [ ${it} -ge 100 ]
    then
      echo "adapter第"${it}"次创建日期目录失败:" 2>&1|tee -a ${ADAPTER_LOGFILE}
      exit 1
    fi
    
    echo "开始执行脚本--------"${JOB_PRG}"--------" 2>&1|tee -a ${ADAPTER_LOGFILE}
    ${SHPATH}/${CMD} 2>&1|tee -a ${ADAPTER_LOGFILE}
    echo "执行脚本完成--------"${JOB_PRG}"--------" 2>&1|tee -a ${ADAPTER_LOGFILE}

     

  • 相关阅读:
    md5
    表空间
    create_index
    非额度合同和额度合同
    如何在linux中查找python安装包的路径
    Golang中的SingleFlight与CyclicBarrier
    linux安装protoc
    protobuf 的优缺点
    Xshell 连接 VirtualBox
    限制 input 输入框只能输入纯数字
  • 原文地址:https://www.cnblogs.com/javasl/p/14887316.html
Copyright © 2011-2022 走看看