BASH forLoopの使用方法



問題を排除するために楽器を試してください

bashスクリプトを作成する際の最も基本的なトリックの1つは、ループを作成して、特定のタスクを複数回自動的に実行できるようにすることです。最終的に、ループは所定のテスト条件に到達し、突然実行を停止します。このようなループは、LinuxとmacOSのbashだけでなく、Windows 10内のbashシェル、さらにはFreeBSDのさまざまなシェルでも完全に機能します。もちろん、任意のループで任意のコマンドを記述し、任意の時間、任意のプロセスを続行できます。非常に単純なループをいくつか作成しますが、これらのスキルを使用して、任意の種類のスクリプトを作成できます。



スクリプトの作成を開始する方法はたくさんありますが、この説明では、Dashでターミナルを検索するか、KDE、MATE、LX、またはWhiskerメニューでターミナルをクリックするか、コマンドプロンプトを開いたと仮定します。 Ctrl、Alt、Tを同時に押したままにします。エディターとしてのvi / vimとnanoについて説明しますが、どのエディターを使用するかという問題は非常に個人的なものであり、快適に感じるものなら何でも使用できます。



方法1:untilループ

おそらく、bashの最も基本的なループはuntilループです。設定したテスト条件が真になるまでコマンドを実行し続けます。 nanoまたはviを使用して、until.shという存在しないファイルを開き、新しいテキストを挿入する準備ができていることを前提としています。最初はこれを簡単にするために、ターミナルで20までカウントするものを作成します。



次のように入力することから始めます。

#!/ bin / bash

n = 0



[$ n -gt20]まで

行う

エコー$ n

((n ++))

完了

nanoを使用している場合は、Ctrlキーを押しながらOキーを押し、最後にXキーを押して終了します。 viのユーザーは、エスケープを押してから:wqと入力して、保存して終了します。

次のタイプ chmod + xuntilLoop プロンプトで実行可能にし、次のように入力します ./untilLoop それを実行します。ループが実行されると、n変数が20になるまで、端末に新しい数値が出力され続けます。

ちなみに、最初の行は、これらのスクリプトを操作するときにロードするシェルを環境に示しています。一部のプログラマーは、スクリプトが特定のPOSIX標準に準拠していることを確認するために、#!/ bin / shのみを使用することを推奨していますが、これらの単純なスクリプトは、最新のシステムの大部分で問題なく実行できます。

方法2:forループ

forループは、指定されたリスト内のすべての項目を調べてから、そのリストに対して指定されたコマンドのセットを実行します。いくつかのオペレーティングシステム名を印刷するものを作成しますが、必要に応じてこれを使用して何でもできることを再度覚えておいてください。

どちらかを入力してください nano forLoop または 私たちforLoop コマンドプロンプトで、次のスクリプトの入力を開始します。 viのユーザーは、挿入モードに入る前に入力する必要があります。

#!/ bin / bash

unices = ’GNU / Linux FreeBSD OpenBSD NetBSD Solaris OpenIndiana Darwin HP-UX Minix’

$ unicesのunixの場合

行う

エコー$ unix

完了

コマンドを発行する前に、nanoではCtrl + O、次にCtrl + Xメソッド、viではEsc、次に:wqメソッドを使用して、ファイルを再度保存します。 chmod + x forLoop 実行可能にします。取得したら、次のように入力して実行します ./forLoop プロンプトで。 forループは、echoコマンドがunices変数の各項目に対して順番に機能するように強制します。もう一度、そのリストを任意の引数に置き換え、echoを任意のコマンドに置き換えて長いプロセスを自動化することができます。

方法3:whileループ

nano、vi、またはその他の使用したいエディターを使用して、whileLoopという3番目のファイルの編集を開始します。グラフィカルテキストエディタを使用したい場合は、コマンドプロンプト内から作業しているのと同じディレクトリにファイルを配置することを確認すれば、これらのプロジェクトのいずれでも実際に使用できます。 。

このファイル内に、次の行を追加します。

#!/ bin / bash

n = 0

while [$ n -le 20]

行う

エコー$ n

((n ++))

完了

他のファイルを保存したのと同じ方法でファイルを保存してから、テキストエディタを終了します。終了したら、コマンドを発行します chmod + x whileLoop 実行してから実行できるようにします ./whileLoop それを実行します。最初のメソッドのuntilLoopスクリプトから出力されたものと同じ出力が表示されます。これは、1秒以内に0から20までカウントされるためです。

これは、この方法でループを操作しているときはいつでも、物事を行う方法が複数あるという事実の優れたデモンストレーションです。技術的には間違った方法はありませんが、Cプログラミング言語のやり方に近い方法でスクリプトを書くべきだと主張するスクリプト作成者に出くわすかもしれません。あるいは、他の人がそうすべきではないと提案するかもしれません。正直なところ、問題を解決するための正しい方法はおそらくたくさんあります。

スクリプトの練習が終わったら、スクリプトを自由に削除してください。

読んだ3分