首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从伪代码实现KornShell

从伪代码实现KornShell
EN

Stack Overflow用户
提问于 2013-05-24 03:57:38
回答 1查看 428关注 0票数 0

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

我对":=“这几行有问题--我不知道那是什么意思。

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

我如何实现这一点?

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-24 04:51:09

:=部件:

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

不过,:=在其他工具中也可用,比如make --在make中它代表立即赋值。

立即赋值的意思是,变量在被解析时就会被赋值。

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

fxn返回值部分:

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

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

默认情况下,脚本中的任何变量都是全局变量,在整个脚本中都是可用的。但仅在当前shell的范围内。

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

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

代码语言:javascript
复制
  fxn_name()
    {
       var=$1;  ## if you want to use a variable 
      ...... 
        ....
       }

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16722786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档