【问题标题】:ksh - global functionksh - 全局函数
【发布时间】:2014-12-09 10:17:19
【问题描述】:

在 ksh 中,我需要声明 un 全局函数,但我没有找到正确的代码。 你能告诉它是否可能以及如何?

我的代码示例:

$ cat script1.ksh
#/bin/ksh
.  ./lib.ksh
printVar "script1"
./script2.ksh

$ cat script2.ksh
#/bin/ksh
printVar "script2"

$ cat lib.ksh
function printVar {
    echo "$1"
}

执行:

$ ./script1.ksh
script1
./script2.ksh: line 2: printVar: command not found

感谢您的帮助!

【问题讨论】:

  • 您需要将. ./lib.ksh 放入script2.ksh,就像您放入script1.ksh 一样
  • 考虑将函数定义放在文件printVar 中,并将存储函数定义的目录添加到环境变量FPATH

标签: function global ksh


【解决方案1】:

更改script2.ksh,使其知道lib.ksh 中的“函数库”,如下所示:

#/bin/ksh
.  ./lib.ksh         # Dot in my function library
printVar "script2"

【讨论】:

    【解决方案2】:

    如 Setchell 所说,在 script2 中包含 lib.ksh,或者在 script1 中包含 script2:

    $ cat script1.ksh
    #/bin/ksh
    . ./lib.ksh
    printVar "script1"
    . ./script2.ksh
    
    $ cat script2.ksh
    #/bin/ksh
    printVar "script2"
    
    $ cat lib.ksh
    function printVar {
        echo "$1"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 2023-03-30
      相关资源
      最近更新 更多