1. 程式人生 > 其它 >linux指令碼之一個程式呼叫另一個程式

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}