hcb 发表于 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的值并没有传递到另外一个脚本中

请问要怎样才能把全局变量传递到另外的脚本中呢?

jk0wg 发表于 2007-11-29 15:31:07

testargs.sh 脚本:#!/bin/bash

showopts () {
while getopts ":pq:" optname
    do
      case "$optname" in
      "p")
          echo "Option $optname is specified"
          ;;
      "q")
          echo "Option $optname has value $OPTARG"
          ;;
      "?")
          echo "Unknown option $OPTARG"
          ;;
      ":")
          echo "No argument value for option $OPTARG"
          ;;
      *)
      # Should not occur
          echo "Unknown error while processing options"
          ;;
      esac
    done
return $OPTIND
}

showargs () {
for p in "$@"
    do
      echo "[$p]"
    done
}

optinfo=$(showopts "$@")
argstart=$?
arginfo=$(showargs "${@:$argstart}")
echo "Arguments are:"
echo "$arginfo"
echo "Options are:"
echo "$optinfo"运行 testargs.sh 脚本:$ ./testargs.sh -p -q qoptval abc "def ghi"
Arguments are:


Options are:
Option p is specified
Option q has value qoptval
$ ./testargs.sh -q qoptval -p -r abc "def ghi"
Arguments are:


Options are:
Option q has value qoptval
Option p is specified
Unknown option r
$ ./testargs.sh "def ghi"
Arguments are:

Options are:

younger 发表于 2007-11-29 15:51:28

给点经验。我以前也遇到同样问题
解决方法是在定义全局变量的同时给它赋值
:global str"abc"

hcb 发表于 2007-11-29 16:29:37

我也是在定义全局变量的同时给它赋值了,另外的脚本里面就是取不到全局变量的值啊
能不能给一个测试的代码呢?我的目的是在不同的脚本中用全局变量来传递数据

jk0wg 发表于 2007-11-29 20:39:06

运行脚本的时候,要把变量当作参数传递给脚本啊..

younger 发表于 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

hcb 发表于 2007-11-29 21:27:03

原帖由 jk0wg 于 2007-11-29 20:39 发表 http://bbs.routerclub.com/images/common/back.gif
运行脚本的时候,要把变量当作参数传递给脚本啊..

如何传递参数?我想了很旧,也测试了很久,麻烦指点一下

hcb 发表于 2007-11-29 21:38:07

原帖由 younger 于 2007-11-29 21:01 发表 http://bbs.routerclub.com/images/common/back.gif
建立两个脚本
脚本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 编辑 ]

younger 发表于 2007-11-30 10:45:58

put 在命令行下才有用的
页: [1]
查看完整版本: 全局变量怎么用?