簡體   English   中英

Bourne Shell For i in (seq)

[英]Bourne Shell For i in (seq)

我想在 Bourne shell 中編寫一個循環來迭代一組特定的數字。 通常我會使用seq

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

但是貌似在這個Solaris box seq是不存在的。 任何人都可以通過提供另一種迭代數字列表的解決方案來提供幫助嗎?

嘗試

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

否則,如果您最近使用 Solaris,那么至少有 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

您可以使用dc模擬seq

例如:

seq 0 5 120

改寫為:

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

使用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
#!/bin/sh
for i in $(seq 1 10); do
        echo $i
done

我發現這行得通,雖然像罪一樣丑陋:

for i in `echo X \n Y \n Z ` ...
for i in `seq 1 5 20`; do echo $i; done

結果:

5
10
15
20

$人序列

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM