我试过了,
#!/bin/ksh
for i in {1..10}
do
echo "Welcome $i times"
done
在AIX框的Ksh中。 我得到输出,
欢迎{1..10}次
这里有什么问题? 是不是应该从1到10打印? 编辑: 根据perkolator的帖子,来自Iterating through a range of ints in ksh?
它仅适用于Linux。是否有任何其他解决方案/替换unix box ksh?
for i in 1 2 3 4 5 6 7 8 9 10
很难看。
感谢。
答案 0 :(得分:4)
我认为从内存上看,AIX上的标准ksh
是一个较旧的变体。它可能不支持ranged for循环。尝试使用ksh93
代替ksh
运行它。这应该与ksh
位于同一位置,可能是/usr/bin
。
否则,只需使用旧式的东西:
i=1
while [[ $i -le 10 ]] ; do
echo "Welcome $i times"
i=$(expr $i + 1)
done
实际上,查看publib似乎证实了这一点(ksh93
代码段)所以我会试着沿着这条路走下去。
答案 1 :(得分:0)
原因是93前ksh实际上并不支持范围。
当你在Linux上运行它时,你会发现ksh实际上是bash或ksh93的链接。
尝试循环: -
for ((i=0;i<10;i++))
do
echo "Welcome $i time"
done
答案 2 :(得分:0)
似乎您拥有的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"
}
答案 3 :(得分:0)
您可以查看jot是否有效see man page here,如果没有,请编写自己的小C程序来做同样的事情并调用它。
jot的语法类似于
for i in `jot 1 10`
do
//do stuff here
done