为循环范围不工作ksh

我试过这个,

#!/bin/ksh for i in {1..10} do echo "Welcome $i times" done 

在AIX框的Ksh中。 我得到的输出为,

欢迎{1..10}次

这里有什么问题? 是不是应该从1到10打印? 编辑:根据perkolator的post,从ksh中通过一系列的整数迭代?

它只适用于Linux。 有没有其他的解决办法/替代unix box ksh?

 for i in 1 2 3 4 5 6 7 8 9 10 

是丑陋的。

谢谢。

我从内存中想到,AIX上的标准ksh是一个较老的变体。 它可能不支持循环范围。 尝试用ksh93而不是ksh运行它。 这应该与ksh相同,可能是/usr/bin

否则,只需要使用一些老式的东西:

 i=1 while [[ $i -le 10 ]] ; do echo "Welcome $i times" i=$(expr $i + 1) done 

其实,通过publib看起来似乎证实了这一点( ksh93片段),所以我会试图走下去的路线。

原因是93年前的ksh实际上并不支持范围。

当你在Linux上运行它时,你会发现ksh实际上是bash或ksh93的链接。

尝试循环像: –

 for ((i=0;i<10;i++)) do echo "Welcome $i time" done 

看来你的ksh版本没有范围运算符。 我已经在几个系统上看到了这个。

你可以用while循环来解决这个问题:

 while [[ $i -lt 10 ]] ; do echo "Welcome $i times" (( i += 1 )) done 

在我的系统上,我通常使用Perl,所以脚本看起来像

 #!/usr/bin/perl for $i (1 .. 10) { echo "Welcome $i times" } 

你可以检查一下,看看有没有工作, 看到手册页,如果没有,写你自己的小C程序做同样的,并呼吁。

jot的语法是类似的

 for i in `jot 1 10` do //do stuff here done