免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1843 | 回复: 4
打印 上一主题 下一主题

问一下,这个功能能实现否........ [复制链接]

论坛徽章:
2
白羊座
日期:2013-09-12 21:13:11酉鸡
日期:2014-12-18 13:56:26
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-24 10:14 |只看该作者 |倒序浏览
本帖最后由 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}   




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

论坛徽章:
2
白羊座
日期:2013-09-12 21:13:11酉鸡
日期:2014-12-18 13:56:26
2 [报告]
发表于 2011-05-24 13:25 |只看该作者



有什么资料参考下?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
3 [报告]
发表于 2011-05-24 14:40 |只看该作者
. sign.cfg

没看懂,猜一下吧

论坛徽章:
2
白羊座
日期:2013-09-12 21:13:11酉鸡
日期:2014-12-18 13:56:26
4 [报告]
发表于 2011-05-24 15:36 |只看该作者
回复 4# waker


    sign.cfg文件是一个普通文件,就是放一堆变量,不可以执行它....test.sh通过参数到这个文件里取得参数Start和参数End之间的变量,然后执行。如果直接运行的话,所有的变量都设置成了最后一次定义的那个,应该是不行。

论坛徽章:
2
白羊座
日期:2013-09-12 21:13:11酉鸡
日期:2014-12-18 13:56:26
5 [报告]
发表于 2011-05-24 16:38 |只看该作者
解决了


eval。。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP