我试过这个,
#!/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