shell - 关于 KornShell 中的 'for' 循环

标签 shell scripting for-loop ksh

有没有一种方法可以在 KornShell (ksh) 中使用“for”来实现以下功能? 这是 C 等价物:

for(i=1;i<20;i++)
{
    printf("%d",i);
}

我想知道这是否可以仅使用“for”而不是“while”来实现

我尝试了以下方法,它似乎不起作用。

for i in [1-20]
    do

    print $i
    done

请告诉我您的想法和解决方案。

最佳答案

不是真正的答案,而是给临时 ksh 用户的 FYI。

编辑 2019-05-12(以下粗体的小编辑,其他信息现在stricken)。

为了澄清这里的几条评论,在典型的供应商安装(非 Linux(也许它们也是?))中有 2 个 ksh 可用。

Solaris 和 AIX 有 ksh 和 ksh93(其他供应商可能也是如此)。基本 ksh 也称为 ksh88。 The New Kornshell Command and Programming Language, 1995 中描述了 Ksh93

具有真正ksh(不是pdksh)的Linux系统,大多使用名为ksh的ksh93。

最后,为了进一步混淆事物,不要让 1995 年的发布日期欺骗您,ksh continues under 正在 由 AT&T 的 David Korn 和 Glen Fowler 积极开发直到 2012 年? 版本每年发布 2-3 次。一些 Linux 版本选择较新的版本。

这些较新的版本具有非常高级的功能 (大部分内容取自 AT&T research UWIN page. search for the link 'notes and changes' (无效链接))

  • 像 c 结构一样组成的复合变量(没有 c 数据类型,只是排版声明)(一个用户声称有 500 兆内存结构)
  • 具有完整 C99 算法的 double 浮点运算..数字 Inf 和 NaN 可用于算术表达式。
  • TAB-TAB 补全生成一个带编号的补全列表 ...
  • 支持处理/处理多字节语言环境(例如,en_US.UTF-8、hi_IN.UTF-8、ja_JP.eucJP、zh_CN.GB18030、zh_TW.BIG5 等)...
  • /dev/(tcp|udp|sctp)/host/sevrice 现在处理 IPv6 地址 ...
  • ...使用新的重定向运算符通过偏移量或内容查找文件。
  • 一个新的 --showme 选项,它允许脚本的某些部分表现得好像指定了 -x 而其他部分照常执行。 ...
  • 添加了 [[...]] 运算符 =~,它将字符串与扩展的正则表达式进行比较....
  • 内置的 printf(1) 已扩展为支持 = 标志以将字段居中...(和其他)...
  • View 路径
  • “大部分实用程序由 AT&T 开发并符合 POSIX.2 和 X/Open。​​”

(注意上面的...s,通常表示删除了一些符合条件的信息)

Korn 和 Fowler 还为使用 Mingw 或 Cygwin 等系统的人们开发了一个高级环境 UWIN(Unix for Windows),这值得单独发表一篇文章。 UWIN 的缺点是,

  • 与您在您最喜欢的 Linux 中找到的实用程序集不同。
  • 另一个几乎必须使用 MS Visual C 的文件编译环境(据说通过 Mingw 提供的 gcc 支持正在开发中),
  • 一个非常小的支持社区,
  • AT&T Common Public License V 1.0 Eclipse Public License * 不是 GNU。

参见 UWin main page (死链接):不幸的是过时了,最好在上面的 dnld 链接中四处寻找。嗯,这样好多了 Glenn Fowler's FAQ for UWin (也死了,时间机器有人吗?)。

希望对您有所帮助!

编辑 2019-05-12 .死链接的原因? David Korn and Glen Fowler Laid Off (at AT&T, 2012?

后来有消息称他们在谷歌工作。我无法证实这一点,因此将其视为旧谣言。

并查看 Is Ksh93 dead?

ast git-hub site 似乎仍有一些事件. ast 是包含 ksh93 的总体包。您可以在那里获取新的源代码并进行编译。


这是项目描述的文本。 (README.md 中有相当多的信息)。

KSH93

This repository contains the AT&T Software Technology (AST) toolkit from AT&T Research. As of November 2017 the development focus has been shifted to the ksh (or ksh93) command and supporting code required to build it.

The non-ksh code of the AST project is no longer being actively maintained. If you are interested in the non-ksh code see below for details on which branches contain the full AST code base.

The project only supports systems where the compiler and underlying hardware is ASCII compatible. This includes Linux on IBM zSeries but not z/OS. The nascent, incomplete, support for EBCDIC has been removed. See issue #742.

* EPL 取代了 AT&T 原来的 CPL。

关于shell - 关于 KornShell 中的 'for' 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5479433/

相关文章:

android - 在linux shell脚本中执行程序

iis - 使用Powershell更改IIS6站点主目录

syntax - 有人可以为我解释一下吗 - for (int i = 0; i < 8; i++)

r for 循环回归 lm(y~x)

bash - 如何使用 bash 显示有两个子文件夹的文件夹?

shell - 什么${(%):-%n} means?

java - 从脚本调用 javascript 解释器

linux - Linux 变量/数组分配中的 Bash 脚本

batch-file - 如何在管道中涉及的 FOR 循环中设置变量?

linux - 在linux下遍历