+ -
当前位置:首页 → 问答吧 → 问一下,这个功能能实现否........

问一下,这个功能能实现否........

时间:2011-05-24

来源:互联网

本帖最后由 lssliu 于 2011-05-24 10:50 编辑

作了个共通shell,调用这个shell的时候给shell一个参数,然后shell去读它本身的cfg文件--这个文件就是一个普通文件。
  1. #sign.cfg

  2. #配置文件test_01_01_01功能对应的配置项
  3. #test_01_01_01_START
  4. LOGOPT=3
  5. #-------------------------------------------------
  6. # Message echo type : 1-echo , 2-no echo #
  7. #-------------------------------------------------
  8. M_TYPE=1
  9. #-------------------------------------------------
  10. # LOG Directory/FileName
  11. #-------------------------------------------------
  12. LOGDFILE=${LOGDIR}/STATION_01_GPN.`date +"%Y%m%d"`.log

  13. #===============================================================================
  14. # Configuration parameters that defines job function.
  15. #===============================================================================
  16. PARAMETER_FILE=${INDIR}/work/AN06205/Status.txt
  17. StatusFile=`head -1 ${PARAMETER_FILE}`
  18. APPL_CONFIG_PARAM=$StatusFile -DLOG_FILENAME=${LOGDFILE}
  19. #test_01_01_01_END
复制代码
  1. test.sh

  2. #!/bin/sh -x

  3. #设定环境变量
  4. CURRDIR=`pwd`; cd ../..
  5. ENVDIR=`pwd`; export ENVDIR
  6. SYSCATE=`basename ${ENVDIR}`; export ENVDIR
  7. cd $CURRDIR
  8. BINDIR=${ENVDIR}/run/bin; export BINDIR
  9. INDIR=${ENVDIR}/run/data/in; export INDIR
  10. LOGDIR=${ENVDIR}/run/log; export LOGDIR

  11. #得到配置项在配置文件中的开始行
  12. StartLine=`grep -n "${1}_START" sign.cfg | awk -F: '{print $1}'`
  13. #得到配置项在配置文件中的结束行
  14. EndLine=`grep -n "${1}_END" sign.cfg | awk -F: '{print $1}'`

  15. STEPMSG="${1} start at ${StartLine} line, end at ${EndLine} line of ${1} sign.cfg"; export STEPMSG
  16. echo "sed -n '${StartLine},${EndLine}'p sign.cfg"

  17. #取得开始行和结束行之间的内容,去掉空行和注释行
  18. the_input=`sed -n "${StartLine},${EndLine}"p sign.cfg | grep -v '^#'|sed /^$/d`
  19. while read firstvar
  20. do
  21. tmp=$firstvar
  22. echo ${tmp}---------

  23. #将变量设置成环境变量
  24. export "${tmp}"
  25. secondvar=$firstvar
  26. done <<EOF
  27. $the_input
  28. EOF



  29. #test 输出环境变量
  30. echo ${INDIR}
  31. echo ${LOGOPT}
  32. echo ${M_TYPE}
  33. echo ${LOGDFILE}
  34. echo ${PARAMETER_FILE}
  35. echo ${StatusFile}
  36. echo ${APPL_CONFIG_PARAM}
复制代码
我执行这个共通的时候结果:

  1. sh test.sh test_01_01_01

  2. sed -n '1,21'p sign.cfg
  3. LOGOPT=3---------
  4. M_TYPE=1---------
  5. LOGDFILE=${LOGDIR}/STATION_01_GPN.`date +"%Y%m%d"`.log---------
  6. PARAMETER_FILE=${INDIR}/work/AN06205/Status.txt---------
  7. StatusFile=`head -1 ${PARAMETER_FILE}`---------
  8. APPL_CONFIG_PARAM=$StatusFile -DLOG_FILENAME=${LOGDFILE}---------
  9. /work1/pgs201/JobGen-Exe/jobexe/run/data/in
  10. 3
  11. 1
  12. ${LOGDIR}/STATION_01_GPN.`date +"%Y%m%d"`.log
  13. ${INDIR}/work/AN06205/Status.txt
  14. `head -1 ${PARAMETER_FILE}`
  15. $StatusFile -DLOG_FILENAME=${LOGDFILE}
复制代码
从文件中读取的变量中的环境变量和函数没有被替换掉。
echo ${LOGOPT}                                3   
echo ${M_TYPE}                                 1   
echo ${LOGDFILE}                              ${LOGDIR}/STATION_01_GPN.`date +"%Y%m%d"`.log   
echo ${PARAMETER_FILE}                   ${INDIR}/work/AN06205/Status.txt   
echo ${StatusFile}                              `head -1 ${PARAMETER_FILE}`   
echo ${APPL_CONFIG_PARAM}             $StatusFile -DLOG_FILENAME=${LOGDFILE}   



这个有什么方法可以实现?

作者: lssliu   发布时间: 2011-05-24

可以

作者: lzx1632009   发布时间: 2011-05-24

:em15::em15::em15::oops::oops::oops:


有什么资料参考下?

作者: lssliu   发布时间: 2011-05-24

热门下载

更多