Bourne Shell For i in (seq)

发布于 2024-08-18 08:25:25 字数 216 浏览 5 评论 0原文

我想在 Bourne shell 中编写一个循环来迭代一组特定的数字。通常我会使用 seq

for i in `seq 1 10 15 20`
   #do stuff
loop

但在这个 Solaris 盒子上,seq 似乎不存在。任何人都可以通过提供另一种解决方案来迭代数字列表来提供帮助吗?

I want to write a loop in Bourne shell which iterates a specific set of numbers. Normally I would use seq:

for i in `seq 1 10 15 20`
   #do stuff
loop

But seemingly on this Solaris box seq does not exist. Can anyone help by providing another solution to iterating a list of numbers?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

聽兲甴掵 2024-08-25 08:25:25

如果您有最新的 Solaris,请尝试

for i in 1 10 15 20
do
   echo "do something with $i"
done

其他方式,至少有 bash 3。例如,给出从 1 到 10 和 15 到 20 的范围,

for i in {1..10} {15..20}
do
  echo "$i"
done

或者使用像 nawk 这样的工具

for i in `nawk 'BEGIN{ for(i=1;i<=10;i++) print i}'`
do
  echo $i
done

,甚至使用 while 循环

while [ "$s" -lt 10 ]; do s=`echo $s+1|bc`; echo $s; done

try

for i in 1 10 15 20
do
   echo "do something with $i"
done

else if you have recent Solaris, there is bash 3 at least. for example this give range from 1 to 10 and 15 to 20

for i in {1..10} {15..20}
do
  echo "$i"
done

OR use tool like nawk

for i in `nawk 'BEGIN{ for(i=1;i<=10;i++) print i}'`
do
  echo $i
done

OR even the while loop

while [ "$s" -lt 10 ]; do s=`echo $s+1|bc`; echo $s; done
梅倚清风 2024-08-25 08:25:25

您可以使用 dc 模拟 seq

例如:

seq 0 5 120

重写为:

dc -e '0 5 120  1+stsisb[pli+dlt>a]salblax'

You can emulate seq with dc:

For instance:

seq 0 5 120

is rewritten as:

dc -e '0 5 120  1+stsisb[pli+dlt>a]salblax'
人疚 2024-08-25 08:25:25

使用 bc 的另一种变体:

for i in $(echo "for (i=0;i<=3;i++) i"|bc); do echo "$i"; done

对于 Bourne shell,您可能必须使用反引号,但如果可以的话请避免使用它们:

for i in `echo "for (i=0;i<=3;i++) i"|bc`; do echo "$i"; done

Another variation using bc:

for i in $(echo "for (i=0;i<=3;i++) i"|bc); do echo "$i"; done

For the Bourne shell, you'll probably have to use backticks, but avoid them if you can:

for i in `echo "for (i=0;i<=3;i++) i"|bc`; do echo "$i"; done
一个人的夜不怕黑 2024-08-25 08:25:25
#!/bin/sh
for i in $(seq 1 10); do
        echo $i
done
#!/bin/sh
for i in $(seq 1 10); do
        echo $i
done
左岸枫 2024-08-25 08:25:25

我发现这很有效,尽管丑陋如罪:

for i in `echo X \n Y \n Z ` ...

I find that this works, albeit ugly as sin:

for i in `echo X \n Y \n Z ` ...
梦里南柯 2024-08-25 08:25:25
for i in `seq 1 5 20`; do echo $i; done

结果:

5
10
15
20

$ man seq

SEQ(1)                           User Commands                          SEQ(1)

NAME
       seq - print a sequence of numbers

SYNOPSIS
       seq [OPTION]... LAST
       seq [OPTION]... FIRST LAST
       seq [OPTION]... FIRST INCREMENT LAST
for i in `seq 1 5 20`; do echo $i; done

Result:

5
10
15
20

$ man seq

SEQ(1)                           User Commands                          SEQ(1)

NAME
       seq - print a sequence of numbers

SYNOPSIS
       seq [OPTION]... LAST
       seq [OPTION]... FIRST LAST
       seq [OPTION]... FIRST INCREMENT LAST
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文