免费注册 查看新帖 |

Chinaunix

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

【原创】shell内嵌tcl [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-10 11:12 |只看该作者 |倒序浏览
本帖最后由 xiaopan3322 于 2010-12-10 11:44 编辑

    写这段脚本的起因,是因为下面这段内嵌的tcl会起一个sub-shell,但是我又不想用两个脚本来实现,所以我就想着用shell内嵌tcl的方法,没想到,还真的可以。
    已经知道这种用法的请一笑而过,不知道的,大家互相学习:
  1. #!/bin/bash
  2. #set -x
  3. ### Download baseline of SCs from dimension
  4. # version 1.0: created on 2010-06-1 by Bob



  5. #----------------------------------------
  6. #function: Setsee first, then download baseline, nested by tcl
  7. #parameters: $1 --- SC baseline
  8. #tips: execute tcl in shell, by using EOD, chmod firstly, execute secondly
  9. #----------------------------------------
  10. # {{{down_baseline_from_dim
  11. function down_baseline_from_dim()
  12. {
  13.         local sc_baseline=$1

  14.         cat > /tmp/scratch << EOD
  15.         #!/usr/bin/expect --

  16.         set timeout -1

  17.         #set sc_baseline [lindex $argv 0]
  18.         spawn /opt/bin/setsee LINSEE_BTS_2.1.0

  19.         expect {
  20.             "OK, tdlteman. Your environment has been set." {
  21.             send_user "Set environment successfully!\n"
  22.             expect "tdlteman@"
  23.             send "/bts_gmps_hz/basics/Tools/Build/bin/LTE -c /bts_gmps_hz/Build_Tools/ltebuild/env/cfg_BL_download download $sc_baseline\r"
  24.         }

  25.                         eof {
  26.             send_user "Set environment failed!\n"
  27.             exit 1
  28.                         }
  29.         }

  30.         #expect eof
  31.         expect "tdlteman@"
  32.         send "exit\r"
  33.         #send "\003"
  34.         #interact
  35. EOD
  36.         chmod 700 /tmp/scratch
  37.         /usr/bin/expect /tmp/scratch
  38. }
  39. #--------------------------------------------------------------------------------
  40. # }}}



  41. #----------------------------------------
  42. # {{{main
  43. source /bts_gmps_hz/Build_Tools/ltebuild/etc/build.conf
  44. label=$1
  45. sc=$2
  46. if [ "x$sc" = "x" ]; then
  47.         sc=BTSOM
  48. fi

  49. case $sc in
  50.         BTSOM)
  51.                 echo -e "\n***************************************************"
  52.                 echo "Process config file, replace BTSOM baseline: $label"
  53.                 sed -i "s/LNT[0-9].0_OM_.*$/$label/" $BASIC_DIR/env/cfg_BL_download || exit 1
  54.                 grep "BTSOM" $BASIC_DIR/env/cfg_BL_download
  55.                 echo "Done"
  56.                 echo -e "\n***************************************************"
  57.                 echo "Download this baseline"
  58.                 down_baseline_from_dim $label
  59.                 #/usr/bin/expect /bts_gmps_hz/Build_Tools/ltebuild/bin/test $label
  60.                 #exit 0
  61.                 ;;
  62.         *)
  63.                 echo "Don't match"
  64.                 exit 1
  65.                 ;;
  66. esac
复制代码
这段代码的精华在于下面这两段:
        cat > /tmp/scratch << EOD
        #!/usr/bin/expect --

EOD
        chmod 700 /tmp/scratch
        /usr/bin/expect /tmp/scratch

论坛徽章:
0
2 [报告]
发表于 2010-12-10 11:23 |只看该作者
俺太浅薄了。
介这有啥实际中作用,哪个解释下,比如啥时候用得到?

论坛徽章:
0
3 [报告]
发表于 2010-12-10 11:27 |只看该作者
俺太浅薄了。
介这有啥实际中作用,哪个解释下,比如啥时候用得到?
finechore 发表于 2010-12-10 11:23



    好比你要ssh到另外一台机器上去做一些事情,但是private key又不给添加,只能输用户名和密码,这个时候你不能指望一个简单的ssh user@machine “ command ”来实现,更不想用两个脚本来实现,这时候这种内嵌的功能就可以帮到你……

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2010-12-11 10:27 |只看该作者
留着后面用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP