下面的两个示例都可以在现代Bash中工作,但在不同的sh shell(如QNX shell)中不能工作。
$ for i in {1..3}; do echo $i; done
1
2
3
$ for i in $(seq 1 3); do echo $i; done
1
2
3有没有其他方法可以在QNX shell中生成相同的序列?
发布于 2012-06-27 16:27:55
我发现了一个在QNX shell中有效的方法:
integer i=0
while ((i<4)); do i=i+1; echo $i; done发布于 2012-06-27 16:55:13
这是一个模拟expr攻击的简单解决方法。
yes |
head -n 3 |
nl |
while read i yes; do
....
done如果您不关心i的值,那么可以去掉nl行编号。
发布于 2012-06-25 19:20:58
使用seq或jot。您可能需要使用反引号而不是$()。
for i in `seq 1 3`如果您正在使用的QNX版本中的shell是ksh,那么您应该能够使用C风格的for循环:
for ((i = 1; i <=3; i++ ))编辑:
我现在猜你有QNX4,它有一个ksh86克隆作为它的外壳。在我看来,在这种情况下,不包括seq或jot是愚蠢的。然而,抛开所有这些,这里有一个黑客应该能够做序列:
end=3
for n in $(echo "for (i = 1; i <= $end; i++) i" | bc)
do
echo "$n"
donehttps://stackoverflow.com/questions/11188347
复制相似问题