GNU seq(1) 用のポータブル POSIX シェルの代替品?

GNU seq(1) 用のポータブル POSIX シェルの代替品?

seq(1)私はこれがGNU以外の他のシステムではうまくいくとは思わないことがわかりました。seq(1)POSIX(bashではない)シェルで書くことができる簡単な再実装は何ですか?

編集:少なくとも、さまざまなBSD、Solaris、およびMac OS Xでこれを使用する予定です。

ベストアンサー1

代わりawkbc:

seq() (first=$1 incr=$2 last=$3
  echo "for (i = $first; i <= $last; i+=$incr) i" | bc -l
)

1つの利点は、CPUデュアルのサイズ/解像度によって制限されないことです。

$ seq '(2^200)' '(2^100)' '(2^200+2^102)'
1606938044258990275541962092341162602522202993782792835301376
1606938044258990275541962092342430253122431223184289538506752
1606938044258990275541962092343697903722659452585786241712128
1606938044258990275541962092344965554322887681987282944917504
1606938044258990275541962092346233204923115911388779648122880

しかし、数字が大きすぎる場合は改行に注意してください。

$ seq '(2^500)' '(2^100)' '(2^500+2^101)'
32733906078961418700131896968275991522166420460430647894832913680961\
33796404674554883270092325904157150886684127560071009217256545885393\
053328527589376
32733906078961418700131896968275991522166420460430647894832913680961\
33796404674554883270092325904157150886684127560071010484907146113622\
454825230794752
32733906078961418700131896968275991522166420460430647894832913680961\
33796404674554883270092325904157150886684127560071011752557746341851\
856321934000128

おすすめ記事