KornShell从伪代码实现

时间:2013-05-23 19:57:38

标签: shell unix ksh

我正在尝试在KornShell(ksh)中实现下面的伪代码中给出的扩展欧几里德算法。

我遇到了“:=”的问题 - 我不知道那些意思是什么。

我也遇到了多个返回变量的问题。

我该如何实现?

function extended_gcd(a, b)
    x := 0    lastx := 1
    y := 1    lasty := 0
    while b ≠ 0
        quotient := a div b
        (a, b) := (b, a mod b)
        (x, lastx) := (lastx - quotient*x, x)
        (y, lasty) := (lasty - quotient*y, y)       
    return (lastx, lasty)

1 个答案:

答案 0 :(得分:0)

:= part:

:=不适用于shell脚本,对于我们在脚本中使用简单“=”的赋值,即      var =“abcd”;

:=在其他工具中可用,例如在make中 - 它代表立即分配。

立即赋值意味着变量在解析时被赋值。

还有其他可用的变体,如=? ......等等。

fxn返回值部分:

它是一个基本规则,函数只能返回一个值。

但是,如果您对能够在函数体外部使用多个变量感兴趣,那么 - bash / korn / shell通常没有任何特定的概念作为局部变量。

默认情况下,

默认情况下,脚本中的变量是全局的,即全程可用....但仅限于当前shell的范围内。

您需要导出变量以使它们在子shell中可用。      语法:export variable_name;

您还需要使用{}大括号来定义函数体。即

  fxn_name()
    {
       var=$1;  ## if you want to use a variable 
      ...... 
        ....
       }

它的调用/呼叫是           fxn_name $ arg;