Bash範囲:シェルで生成されたシーケンスを反復処理する方法

Bash Range How Iterate Over Sequences Generated Shell



bashの番号のシーケンスは、2つの方法で繰り返すことができます。 1つは使用することです seq コマンドともう1つは、forループで範囲を指定することです。の seq コマンドを実行すると、シーケンスは1から始まり、番号は各ステップで1ずつ増加し、デフォルトで上限まで各行の各番号を出力します。数が上限から始まる場合は、各ステップで1つずつ減少します。通常、すべての数値は浮動小数点として解釈されますが、シーケンスが整数から始まる場合は、10進整数のリストが出力されます。 seqコマンドが正常に実行できる場合は、0を返します。それ以外の場合は、ゼロ以外の数値を返します。範囲付きのforループを使用して、数値のシーケンスを繰り返すこともできます。両方 seq このチュートリアルでは、例を使用して、コマンドと範囲のあるforループを示します。

seqコマンドのオプション:

あなたが使用することができます seq 次のオプションを使用してコマンドを実行します。







-の

このオプションは、すべての数値を同じ幅で出力するために、先行ゼロで数値を埋めるために使用されます。



-f形式

このオプションは、特定の形式で数値を印刷するために使用されます。浮動小数点数は、変換文字として%f、%g、および%eを使用してフォーマットできます。 %gがデフォルトとして使用されます。



-s文字列

このオプションは、数値を文字列で区切るために使用されます。デフォルト値は改行( ‘ n’)です。





seqコマンドの例:

seqコマンドは3つの方法で適用できます。各ステップのインクリメント値またはデクリメント値で使用できるのは、上限または上限と下限、または上限と下限のみです。次の例に、オプションを指定したseqコマンドのさまざまな使用法を示します。

例-1:オプションなしのseqコマンド

上限のみを使用する場合、番号は1から始まり、各ステップで1ずつ増加します。次のコマンドは、1から4までの数値を出力します。



$seq 4

出力:

2つの値をseqコマンドで使用すると、最初の値が開始番号として使用され、2番目の値が終了番号として使用されます。次のコマンドは、7から15までの数値を出力します。

$seq 7 15

出力:

seqコマンドで3つの値を使用する場合、2番目の値は各ステップのインクリメント値またはデクリメント値として使用されます。次のコマンドの場合、開始番号は10、終了番号は1であり、各ステップは2をデクリメントすることによってカウントされます。

$seq 10 -2 1

出力:

例2:–wオプションを指定したseq

次のコマンドは、1から9までの数値に先行ゼロを追加して出力を出力します。

$seq -の0110

出力:

例-3:–sオプションを指定したseq

次のコマンドは、各シーケンス番号の区切り文字として-を使用します。数字のシーケンスは、区切り文字として-を追加することで出力されます。

$seq -NS-8

出力:

例-4:-fオプションを指定したseq

次のコマンドは、1から始まる10個の日付値を出力します。ここでは、%gオプションを使用して、他の文字列値とともにシーケンス番号を追加します。

$seq -NS '%g / 04/2018' 10

出力:

バッシュレンジ

次のコマンドは、%fを使用して浮動小数点数のシーケンスを生成するために使用されます。ここでは、数値は3から始まり、各ステップで0.8ずつ増加し、最後の数値は6以下になります。

$seq -NS '%NS' 3 0.8 6

出力:

例-5:シーケンスをファイルに書き込む

コンソールに出力せずに番号のシーケンスをファイルに保存する場合は、次のコマンドを使用できます。最初のコマンドは、名前の付いたファイルに番号を出力します seq.txt 。番号は5から20まで生成され、各ステップで10ずつ増加します。 2番目のコマンドは、のコンテンツを表示するために使用されます seq.txt ファイル。

$ seq 5 10 20 |猫> seq.txt
$ cat seq.txt

出力:

例-6:forループでseqを使用する

seqでforループを使用してfn1からfn10という名前のファイルを作成するとします。 sq1.bashという名前のファイルを作成し、次のコードを追加します。 forループはseqコマンドを使用して10回繰り返し、fn1、fn2、fn3…..fn10の順序で10個のファイルを作成します。

#!/ bin / bash
にとって seq 10
NS
接するfn。$ i
終わり

出力:

次のコマンドを実行してbashファイルのコードを実行し、ファイルが作成されているかどうかを確認します。

$bashsq1.bash
$ls

範囲のあるforループの例:

例-7:範囲のあるForループ

seqコマンドの代替は範囲です。 range in forループを使用して、seqのような数値のシーケンスを生成できます。次のコードをbashファイルに記述します。 sq2.bash 。ループは5回繰り返され、各ステップで各数値の平方根が出力されます。

#!/ bin / bash
にとってNS {{1..5}
NS
((((結果= n*NS)。)。
捨てた $ n 四角=$ result
終わり

出力:

コマンドを実行して、ファイルのスクリプトを実行します。

$bashsq2.bash

例-8:範囲と増分値を持つforループ

デフォルトでは、番号はseqのように範囲内の各ステップで1ずつ増加します。範囲内の増分値を変更することもできます。次のコードをbashファイルに記述します。 sq3.bash 。スクリプトのforループは5回繰り返され、各ステップは2ずつインクリメントされ、1から10までのすべての奇数を出力します。

#!/ bin / bash
捨てた 「1から10までのすべての奇数は」
にとって {{1..10..2}
NS
捨てた $ i;
終わり

出力:

コマンドを実行して、ファイルのスクリプトを実行します。

$bashsq3.bash

一連の番号を操作する場合は、このチュートリアルに示されているオプションのいずれかを使用できます。このチュートリアルを完了すると、bashスクリプトでseqコマンドとforループをより効率的に使用できるようになります。