找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3640|回复: 8

[其它] 全局变量怎么用?

[复制链接]
发表于 2007-11-29 15:16:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
测试了好久,都不知道全局变量怎么用,只好请教大家了
1, 首先建一个脚本,取名 test, 其内容如下:
#声明str为全局变量
:global str
#显示该变量的值
:put $str

2, 然后在在控制台做如下测试:
#声明str为全局变量并赋值
:global str "abc"
#显示全局变量的值以检验其正确性
:put $str
显示abc, 结果正确
#测试能否传递到另外一个脚本里,运行测试脚本
/sys scr run test
显示空,结果不正确,str的值并没有传递到另外一个脚本中

请问要怎样才能把全局变量传递到另外的脚本中呢?
routeros
发表于 2007-11-29 15:31:07 | 显示全部楼层
testargs.sh 脚本:
  1. #!/bin/bash

  2. showopts () {
  3.   while getopts ":pq:" optname
  4.     do
  5.       case "$optname" in
  6.         "p")
  7.           echo "Option $optname is specified"
  8.           ;;
  9.         "q")
  10.           echo "Option $optname has value $OPTARG"
  11.           ;;
  12.         "?")
  13.           echo "Unknown option $OPTARG"
  14.           ;;
  15.         ":")
  16.           echo "No argument value for option $OPTARG"
  17.           ;;
  18.         *)
  19.         # Should not occur
  20.           echo "Unknown error while processing options"
  21.           ;;
  22.       esac
  23.     done
  24.   return $OPTIND
  25. }

  26. showargs () {
  27.   for p in "$@"
  28.     do
  29.       echo "[$p]"
  30.     done
  31. }

  32. optinfo=$(showopts "$@")
  33. argstart=$?
  34. arginfo=$(showargs "${@:$argstart}")
  35. echo "Arguments are:"
  36. echo "$arginfo"
  37. echo "Options are:"
  38. echo "$optinfo"
复制代码
运行 testargs.sh 脚本:
  1. [ian@pinguino ~]$ ./testargs.sh -p -q qoptval abc "def ghi"
  2. Arguments are:
  3. [abc]
  4. [def ghi]
  5. Options are:
  6. Option p is specified
  7. Option q has value qoptval
  8. [ian@pinguino ~]$ ./testargs.sh -q qoptval -p -r abc "def ghi"
  9. Arguments are:
  10. [abc]
  11. [def ghi]
  12. Options are:
  13. Option q has value qoptval
  14. Option p is specified
  15. Unknown option r
  16. [ian@pinguino ~]$ ./testargs.sh "def ghi"
  17. Arguments are:
  18. [def ghi]
  19. Options are:
复制代码
routeros
回复

使用道具 举报

发表于 2007-11-29 15:51:28 | 显示全部楼层
给点经验。我以前也遇到同样问题
解决方法是在定义全局变量的同时给它赋值
:global str  "abc"
routeros
回复

使用道具 举报

 楼主| 发表于 2007-11-29 16:29:37 | 显示全部楼层
我也是在定义全局变量的同时给它赋值了,另外的脚本里面就是取不到全局变量的值啊
能不能给一个测试的代码呢?我的目的是在不同的脚本中用全局变量来传递数据
routeros
回复

使用道具 举报

发表于 2007-11-29 20:39:06 | 显示全部楼层
运行脚本的时候,要把变量当作参数传递给脚本啊..
routeros
回复

使用道具 举报

发表于 2007-11-29 21:01:18 | 显示全部楼层
建立两个脚本
脚本1名称:script1
内容:     :global x "This's a test!!"
脚本2名称:script2
内容:     :log error $x
先运行1,再运行2,试验成功:LOG里有一条红色的日志 This's a test
routeros
回复

使用道具 举报

 楼主| 发表于 2007-11-29 21:27:03 | 显示全部楼层
routeros
回复

使用道具 举报

 楼主| 发表于 2007-11-29 21:38:07 | 显示全部楼层
原帖由 younger 于 2007-11-29 21:01 发表
建立两个脚本
脚本1名称:script1
内容:     :global x "This's a test!!"
脚本2名称:script2
内容:     :log error $x
先运行1,再运行2,试验成功:LOG里有一条红色的日志 This's a test


非常感谢,用你的例子也成功运行了,但是换成显示就不行,看来不能在脚本里使用put命令了
错误在于我总喜欢用put来显示结果

[ 本帖最后由 hcb 于 2007-11-29 21:45 编辑 ]
routeros
回复

使用道具 举报

发表于 2007-11-30 10:45:58 | 显示全部楼层
put 在命令行下才有用的
routeros
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-9-28 07:27 , Processed in 0.084336 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表