220210や220221など、2つの数字(すべて6桁)が必要なスクリプトがあります。
私が望むのは、220210から220221の間のすべての数字と、この2つの数字をファイルに書き込むループです。
私はこれがおそらく非常に簡単であることを知っていますが、それは私を悩ませました。
HP-UX 11.23 リリース
答え1
seqコマンドが利用できないようで、これがあなたのbashバージョンで動作するかどうかはわかりませんが、次の範囲で試すことができます。
#!/bin/bash
for n in {220210..220221}
do
echo $n >> numberfile.txt
done
答え2
dc
デスクトップ電卓ユーティリティを使用してこれを行うことができます。 2つの範囲番号を順序に関係なくロードします。負の記号をダッシュの代わりに下線に変更することを忘れないでください。たとえば、-32 は _32 と入力されます。
dc <<EOF
220201 220210
[larsa]sb
[lap1+sadla<+]s+
sadla>bla
sal+xp
EOF
結果:
220201
220202
220203
220204
220205
220206
220207
220208
220209
220210
bc
別の方法はバイナリ電卓ユーティリティを使用することです。ご覧のとおり、数字は任意の順序でロードされ、bcは必要に応じて数字を反転し、ステップ1で小さいものから大きいものまで繰り返しを開始します。
echo "a=7;b=0;if(a>b){t=a;a=b;b=t;};for(i=a; i<=b; i++) {i;}" | bc
答え3
seq
これを行う正しい方法は、他の回答で提案されているように拡張機能を使用または保護することです。何らかの理由でできない場合必要単純なPOSIXシェルでこれを行うには、次のことを試してください。
#!/bin/sh
i=$1;
while [ $i -le $2 ]; do
echo "$i"
i=$((i+1))
done
やや現代的な(しかし移植性が少なく、POSIXではない)構文は次のとおりです。
#!/bin/bash
for((i=$1;i<=$2;i++)); do
echo "$i"
done
答え4
awkは過去30年間、ほぼすべてのディストリビューションで使用されており、これがデフォルトのK&R awkです。
echo 220210 220221 | awk '{ for (j = $1; j <= $2; j++) print j }'