我正在尝试用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)发布于 2013-05-24 04:51:09
:=部件:
:=不是用于shell脚本的,对于赋值,我们在脚本中使用简单的"=“,即var="abcd”;
不过,:=在其他工具中也可用,比如make --在make中它代表立即赋值。
立即赋值的意思是,变量在被解析时就会被赋值。
也有其他变体可用,如=?...等。
fxn返回值部分:
一个函数只能返回一个值,这是一个基本规则。
但是,如果您对能够在函数体之外使用多个变量感兴趣,那么-- bash/korn/shell通常没有任何特定的概念作为局部变量。
默认情况下,脚本中的任何变量都是全局变量,在整个脚本中都是可用的。但仅在当前shell的范围内。
您需要导出变量以使其在子shell中可用。语法:导出variable_name;
此外,您还需要使用{}大括号来定义函数体。即
fxn_name()
{
var=$1; ## if you want to use a variable
......
....
}它的调用/调用是fxn_name $arg;
https://stackoverflow.com/questions/16722786
复制相似问题