我正在尝试在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)
答案 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;