bashでは、さまざまな目的で三つのタイプのループが使用されています。 これらはfor、while、untilループです。 これらのループのさまざまな用途については、この記事では30の異なる例を使用して説明します。
Bashループの使用:
- forループを使用してリスト内の項目を読み取る
- forループを使用して配列を読み取る
- forループを使用してスペースを含む文字列値のリストを読み取る
- .終わりだ.INCREMENT}range
- {STARTでforループを使用します。.終わりだ.インクリメント}範囲後退
- forループを3つの部分と条件カウンタで使用
- forループを3つの部分と複数の条件とアクションで使用
- 無限forループを使用
- forループを条件付きブレークと続行で使用
- forループを使用してファイル名を読み込む
- forループを使用してファイル名を読み込む
- forループを使用してファイル名を読み込む
- forループを使用してファイル名を読み込む
- forループを使用してファイル名を読み込む
- forループを使用してファイル名を読み込む
- forループを使用してファイル名を読み込む
- forループを使用してディレクトリのファイル名を再帰的に読み取る
- forループを使用してディレクトリのファイル名を再帰的に読み出す
- 条件
- ループを実行してディレクトリのファイル名を再帰的に読み取る
- ファイルが存在する
- パッケージリストコマンドの出力に基づいてforループを使用する
- forループを使用してファイルの各行を読み取る
- forループを使用して条件付き一致に基づいてファイルの各行を読み取る
- カウンタ付きwhileループを使用する
- ユーザー入力を使用してメニューから終了を選択するときにwhileループを使用する
- whileループとgetoptsの組み合わせ
- カウンタ付きuntilループの使用
- ユーザー入力に基づいてuntilループを終了
- ネストされたwhileループの使用
- untilループを使用してバックグラウ スクリプトで開始
- whileループを使用して終了していないps出力からpidを読み取る
- ループを使用してファイル内の任意の文字列を検索し、終了
- bashとcurlループとレコード出力を使用したバッチモード
- forループを使用してリスト内の項目を読み取る
- forループを使用して配列を読み取る
- forループを使用してスペースを含む文字列値のリストを読み取る
- {STARTでforループを使用します。.終わりだ.INCREMENT}range
- {STARTでforループを使用します。.終わりだ.INCREMENT}range going backward
- for loop with3parts and condition counter
- forループを3つの部分と複数の条件で使用し、カンマでアクション
- Using Infinite for loop
- for loop with conditional break and continue
- forループを使用してファイル名を読み込むには
- forループを使用してfindコマンドから出力を読み取る
- forループを使用してディレクトリのファイル名を再帰的に読み取る
- forループを使用してディレクトリのファイル名を再帰的に読み込む
- ファイルが存在するまでループを実行する
- package listコマンドの出力に基づくforループの使用
- forループを使用してファイルの行を読み取る
- For loopを使用して条件付き一致でファイルの行を読み取る
- whileループをカウンタで使用する
- ユーザー入力でwhileループを使用し、メニューからexitを選択すると終了
- whileループとgetoptsの組み合わせ
- カウンタ付きuntilループの使用
- ユーザー入力に基づいてループを終了するまで
- ネストされたwhileループを使用する
- スクリプトでバックグラウンドタスクが開始されるまでループをスリープ/待機する
- whileループを使用して終了していないps出力からpidを読み取る
- ループを使用してファイル内の任意の文字列を検索し、終了
- bashとcurlを組み合わせてurlからのデータを評価する
- ポートからのデータの読み取りwhileループを使用してnetcatによって送信
- ping URLループを使用して
- ループとレコード出力を使用してバッチモードでtopを実行する
- 結論
forループを使用してリスト内の項目を読み取る
‘for’ループの最も簡単な使用法は、文字列または数値データのリ 数値データのリストは、次の例のfor-inループを使用して反復されます。 ここでは、ループの各ステップで変数$nに4つの数字が読み込まれ、出力されます。 次のスクリプトを使用してbashファイルを作成し、ターミナルから実行します。
#for-inループ番号のリストを読み取る
for n in10 11 17 25
do
#各番号を印刷する
echo”番号は$nです”
done
出力:
スクリプトを実行します。
スクリプトを実行すると、次の出力が表示されます。
Go to Top
forループを使用して配列を読み取る
任意の配列変数には、for-inループを使用して非常に簡単に反復できるデータのリストが含まれています。 次の例は、for-inループを使用して文字列データの配列を読み取る方法を示しています。 ここでは、各配列の値は変数$languageでフェッチされ、各反復で言語に基づいてメッセージが出力されます。
languages=(“Bash PERL Python PHP”)
for language in in languages
do
if
then
echo”language language is a web programming language”
else
echo”language language is a scripting language”
fi
done
出力:
スクリプトを実行します。
スクリプトを実行すると、次の出力が表示されます。
Go to Top
forループを使用してスペースを含む文字列値のリストを読み取る
for-inループで文字列のリストを読み取り、文字列値にスペースが含まれている場合、文字列値が一重引用符または二重引用符で引用されていない場合、値はスペースに基づいて単語に分割されます。 次の例は、スペースを持つ文字列値のリストをfor-inループで読み取る方法を示しています。 ここでは、リストの1つの値にスペースが含まれており、出力にスペースが表示されます。
#for-inループスペースを持つ文字列のリストを読み取る
“Ubuntu””Linux Mint””Fedora””CentOS”
do
#各文字列を印刷する
echo”Operating System-os os”
done
出力:
スクリプトを実行します。
ここでは、文字列値’Linux Mint’が正しく出力されます。
トップに移動
{STARTでforループを使用します。.終わりだ.INCREMENT}range
for-inループの別の使用法は、範囲配列を読み取ることです。 次の例では、forループを使用して、各ステップで5ずつ増分される10から30までのデータの範囲を読み取ります。 次に、スクリプトは10で割り切れる範囲の数値を出力します。
#forループを使用して範囲を読み取ります
for num in{10..30..5}
do
#数が10で割り切れるかどうかを確認しますif((n num%10==0 ))
次に、
echo”n num is divisible by10″
fi
done
出力:
スクリプトを実行します。
スクリプトを実行すると、次の出力が表示されます。
トップに移動
{STARTでforループを使用します。.終わりだ.INCREMENT}range going backward
データの範囲は、範囲の開始値が範囲の終了値よりも大きいfor-inループを使用して逆方向に読み取ることができます。 次の例では、範囲は50から開始し、30まで終了します。 $Numの値は、ループの各ステップで10ずつ減少します。 このスクリプトは、5と10で割り切れる範囲の数値を出力します。
echo”次の数字は5と10で割り切れる”
#forループを使用して範囲を読み取ります
for num in{50..30..10}
do
#数が5と10で割り切れるかどうかを確認しますif((n num%5==0 && $num%10==0 ))
次に
echo-n”$num”
fi
done
echo”Done””
出力:
スクリプトを実行します。
スクリプトを実行すると、次の出力が表示されます。
Go to Top
for loop with3parts and condition counter
Bashは、他の標準プログラミング言語と同様にfor loop with3partsをサポートしています。 最初の部分には初期化が含まれ、2番目の部分には終了条件が含まれ、3番目の部分にはインクリメントまたはデクリメント操作が含まれます。 このループは、主に反復回数が事前に定義されている場合に使用されます。 次の例では、forループは50回反復し、1から50の合計を計算します。 合計の結果は出力として出力されます。
#変数を初期化する
sum=0
#ループは50回反復します
for((n=1;n<=50;n++))
do
#合計値をnの次の値に追加します
((sum=$sum+$n))
done
#結果を出力します
#結果を出力します
#結果を出力します
#結果を出力します
#結果を出力します
#結果を出力します
#結果を出力します
#結果を出力します
#結果を出力します
#結果を出力します
#結果を出力します
echo”1から50の合計はsum sumです”
出力:
スクリプトを実行します。
出力には1から50の合計が表示されます。
トップへ
forループを3つの部分と複数の条件で使用し、カンマでアクション
forループを3つの部分で使用すると、複数の初期化、終了条件、アクションで定義できます。 次の例は、このタイプのループの使用方法を示しています。 ここで、$xおよびy y変数は、5および25によって初期化されます。 ループは、$xの値が20以下になり、$yの値が5より大きくなるまで続行されます。 Loop xの値は5ずつ増加し、loop yの値はループの各反復で5ずつ減少します。 各ステップの$xとy yの現在の値が出力として出力されます。
#ループは2つの条件に基づいて反復します
for((x=5,y=25;x<=20 && y>5;x+=5,y-=5))
do
echo”x=$xとy=$yの現在の値”
done
出力:
スクリプトを実行します。
スクリプトを実行すると、次の出力が表示されます。
Go to Top
Using Infinite for loop
終了条件なしでループが定義されている場合、ループは無限ループとして機能します。 次の例は、初期化、終了、およびアクション部分を含まない無限のforループの使用を示しています。 このタイプのforループは、ダブルセミコロン(;;)で定義されます。 次のスクリプトは、ユーザーが入力として’quit’を入力するまでループを続行します。 スクリプトは1から20までの任意の数値を出力し、それ以外の場合は”数値が範囲外です”と出力します”
#無限ループを宣言します
for(( ; ループの終了条件を設定する
if
then
echo”Program terminated”
exit0
fi
#数字の範囲を確認するif(($n<1||$n>20))
then
echo”数値が範囲外です”
else
echo”数値は$nです”
fi
done
出力:
スクリプトを実行します。
ここで、6は有効な数値である最初の入力として取られ、22は無効な数値である第二の入力として取られ、quitはスクリプトを終了する第三の入力と
Go to Top
for loop with conditional break and continue
‘continue’文は、任意の条件に基づいてループの一部を省略するために使用され、’break’文は、任意の条件に基づいてループを終了するために使用されます。 次の例は、forループでのこれらのステートメントの使用方法を示しています。 ここでは、ループは文字列データのリストを読み取るために使用され、リスト内の各値は変数$foodに格納されます。 Food foodの値が’Soup’の場合、値を印刷せずにループを続行します。 Food foodの値が’Pasta’の場合、ループは終了します。 Food foodに’Soup’と’Pasta’以外の値が含まれている場合は、その値が出力されます。 そのため、スクリプトはリストから2つの値を出力として出力します。
#リストでループを宣言
ピザの食べ物のために
do
#continueの条件を設定
if
then
continue
#breakの条件を設定
elif
then
break
else
echo”food food is my favorite”
echo”food food is my favorite”
echo”food food is my favorite”
echo”food food is my favorite”
echo”food food is my favorite”
echo”food food is my favorite”
echo”food food is my favorite”
echo”8722>fi
完了
出力:
スクリプトを実行します。
ここでは、リストから二つの値が省略されています。 Continue文には’Soup’が印刷されず、break文には’Pasta’が印刷されません。
Go to Top
forループを使用してファイル名を読み込むには
ファイル名をグロビングするか、ファイルの特定の内容をグロビングすることで検索できます。 これは、任意のファイル名を一致させるか、ファイル内のコンテンツを検索するためのワイルドカード文字の異なるタイプを使用しています。 現在の場所のtxt拡張子を持つすべてのファイルは、次の例で印刷されて検索されます。 スクリプトを実行すると、一致するすべてのファイル名が出力として改行なしで出力されます。
#ループはすべてのテキストファイルを検索し、各ファイル名を”file
に保存します。txt”;
do
#ファイル名を出力する
echo echo file;
done
出力:
スクリプトを実行します。
Go to Top
forループを使用してfindコマンドから出力を読み取る
‘find’コマンドは、bashのさまざまな目的に使用されます。 次の例では、’find’コマンドを使用して、現在の場所からすべてのテキストファイル名を読み取ります。 ここでは、大文字と小文字を区別する検索に使用する’-name’オプションを指定します。 したがって、スクリプトは’を持つ現在の場所のファイル名を出力します。任意の名前のtxt’拡張子。 ここでは、ifs変数を使用して、改行をフィールド区切り文字として定義し、各行にfile fileの値を出力します。
#フィールド区切り文字を設定
IFS=$’\n’;
#ディレクトリ
のファイルをRead(find-name”*.txt”);do
echo file file
done
#uunsetフィールド区切り文字
unset IFS;
出力:
スクリプトを実行します。
スクリプトを実行すると、次の出力が表示されます。
Go to Top
forループを使用してディレクトリのファイル名を再帰的に読み取る
‘find’コマンドを使用して、特定のディレクトリのすべてのファイルとサブフ 次の例は、’mydir’ディレクトリの下にあるすべてのファイル名とディレクトリを読み取るための’find’コマンドの使用を示しています。 ここで、ifs変数は、前の例のように$filenameの値を’newline’で出力するために使用されます。
#フィールド区切り文字を設定
IFS=$’\n’;
#ディレクトリのファイル名をRead(find”mydir”)
do
echo”filename filename”
done
#フィールド区切り文字の設定を解除
IFSの設定を解除;
出力:
スクリプトを実行します。
スクリプトを実行すると、次の出力が表示されます。
Go to Top
forループを使用してディレクトリのファイル名を再帰的に読み込む
‘for’ループwith’find’コマンドを使用すると、som+
e任意の条件に基づいてディレ 次の例では、’find’コマンドは条件とともに使用されます。 Mydirディレクトリのテキストファイル名のみを検索します。 ここでは、大文字と小文字を区別しない検索のために、’find’コマンドで’-iname’オプションを使用します。 つまり、拡張子が’txt’または’TXT’のすべてのファイルが一致し、出力として出力されます。 ここで、ifs変数は、前の例のように$filenameの値を’newline’で出力するために使用されます。
#フィールド区切り文字を設定
IFS=$’\n’;
#ディレクトリ
のファイル名のすべてのテキストファイルをRead(find mydir-iname’*.txt’);do
echo”filename filename”
done
#unset field separator
unset IFS;
出力:
次のコマンドを実行して、mydirディレクトリのファイルとフォルダのリストを表示します。
スクリプトを実行します。
ディレクトリには、出力に表示される三つのテキストファイルがあります。
Go to Top
ファイルが存在するまでループを実行する
ファイル名が存在するかどうかは、次の例でinfinite forループを使用してチェックされます。 このスクリプトでは、ファイル名がループの各反復で入力として使用され、ファイル名が現在の場所に存在するかどうかをテストします。 ファイル名が存在する場合、スクリプトは”File exists”を出力し、ループを続行します。
#無限ループを定義する
for((;;))
do
#ファイル名を入力する
echo”ファイル名を入力する”
ファイルを読み込む
#ファイルが存在するかどうかを確認する
if
then
echo”ファイル名が存在しません”
exit0
else
echo”ファイルが存在します”
Fi
完了
出力:
スクリプトを実行します。
既存のファイル名が最初の入力として与えられ、存在しないファイル名がスクリプトを終了する第二の出力として与えられます。
Go to Top
package listコマンドの出力に基づくforループの使用
システムにインストールされているパッケージに関する情報は、`apt list–-installed`コマンドで取得できます。 次の例では、’for’ループを使用して、package listコマンドからインストールされているパッケージ情報を読み取り、各行に各パッケージ情報を出力します。 ここでは、ifs変数を使用して、前の例のように$lineの値を’newline’で出力します。
IFS=$’\n’;Apt(apt list–installed)
do
echo”line line”
done
#フィールド区切り文字の設定を解除
IFSの設定を解除;
出力:
スクリプトを実行します。
出力には、インストールされているパッケージのリストが表示されます。
Go to Top
forループを使用してファイルの行を読み取る
bashでファイルを読み取る方法はたくさんあります。 次の例では、’cat’コマンドを使用して、ファイルtempを読み取ります。txt。 ファイルの各行は変数$lineに格納され、forループの各反復で行が出力されます。 ここでは、ifs変数を使用して、前の例のように$lineの値を’newline’で出力します。
#フィールド区切り文字を設定
IFS=$’\n’;
#ファイルを行ごとに読み込みます
in(cat temp.
do
echo”line line”
done
#unsetフィールド区切り文字
unset IFS;
出力:
スクリプトを実行します。
Go to Top
For loopを使用して条件付き一致でファイルの行を読み取る
ファイルから特定の行のみを印刷する場合は、ファイルの読み取りに使用されるループ内に追加する必要があります。 次の例では、’weekday’の各行の書式設定された出力を出力します。条件に基づくtxt’ファイル。 ファイルのいずれかの行に値’Sunday’が含まれている場合は、’holiday’メッセージが出力されます。
をline(cat weekday.
if
then
echo”line line is a holiday”
else
echo”$line is a working day”
fi
done
出力:
スクリプトを実行します。
スクリプトを実行すると、次の出力が表示されます。
Go to Top
whileループをカウンタで使用する
$カウンタ変数は、ループの反復を制御するために任意のループを使用します。 次の例は、カウンタでwhileループを使用することを示しています。 ここで、counter counterは1に初期化され、whileループは5回反復し、各反復で$counterの値を出力します。 $counterは、ループの終了条件に到達するために、各ステップで1ずつインクリメントされます。
#カウンタを初期化
counter=1
#ループを5回反復します
while
do
echo”Counter value=$counter”
((counter++))
done
出力:
スクリプトを実行します。
Go to Top
ユーザー入力でwhileループを使用し、メニューからexitを選択すると終了
‘while’ループは、5つのオプションのメニューを表示するために次の例で使用されます。 最初の4つのオプションは、ユーザーの入力に基づいて4つの算術演算を実行するために使用され、最後のオプションはスクリプトから終了するため メニューは、入力として二つの数字を提供した後に表示されます。 ユーザーが’1’を選択すると、入力番号が追加されます。 ユーザーが’2’を選択すると、2番目の入力番号が最初の入力番号から減算されます。 ユーザーが「3」を選択した場合、入力番号が乗算され、ユーザーが「4」を選択した場合、最初の入力番号が2番目の入力番号で除算されます。
#二つの数字を取る
echo”数字を入力する”
n1を読む
echo”数字を入力する”
n2を読む
#無限ループを宣言する
while true
do
#メニューを表示する
echo”1. 追加”
エコー”2. 減算”
エコー”3. “
エコー”4. ディビジョン”
エコー”5. Exit”
echo-n”から任意の数を選択します :”
読み取り入力
#選択した値に基づいて操作を実行します
if]
then
((result=n1-n2))
elif]
then
((result=$n1*$n2))
then
((result=$n1*$n2))
then
((result=$n1*$n2))
then
((result=$n1*$n2))
then
((result=$n1*$n2))
then
((result=$n1*$n2))
then echo n1/fi n2))
then
exit0
else
echo”無効な入力”
fi
echo”結果はresult result”
done
出力:
((result=$n1/$n2))
then
exit0
else
echo”結果は$result”
done
出力:
((result=$n1/$n2))
then
exit0
else
echo”無効な入力”
fi
スクリプトを実行します。
オプション2と5を選択すると、次の出力が表示されます。
Go to Top
whileループとgetoptsの組み合わせ
‘getopts’は、bashスクリプトの引数とオプションを読み取るために使用されるbashの組み込み関数です。 次の例は、whileループで使用されるgetopts関数の使用方法を示しています。 ここでは、3つのオプション値がgetoptsで使用されます。 これらは’a’、’r’、’c’です。 これらのオプションには、3つの異なるメッセージが印刷されます。
#オプションを読み込み、getopts”arc”オプション中に変数
に格納します; a)#オプションa
echo”プロセスが中止されました”
;;
r)#オプションr
echo”プロセスが再開されました”
;;
c)#オプションc
echo”プロセスが継続されています”
;;
c)#オプションc
echo”プロセスが継続されています”
;;
c)#オプションc
echo”プロセスが継続されています”
;;
c)#オプションc
echo”プロセスが継続されています”
;;
c)#オプションc”
;;
\? #無効なオプション
echo”Use:or or”
;;
esac
done
出力:
有効なオプションを使用してスクリプトを実行します。
無効なオプションを指定してスクリプトを実行します。
トップへ
カウンタ付きuntilループの使用
Untilループは、前に示されているwhileループのようなカウンタで使用できます。 次の例は、untilループをカウンタで使用する方法を示しています。 ここで、counter counter変数は、1に初期化されたループの反復を制御するために使用されます。 Untilループは、$の値が5になるまで継続されます。 そのため、ループは6回繰り返し、各ステップで値$counterを出力します。 $counterは、ループの終了条件に到達するために、各ステップで1ずつ減少します。
#カウンタを初期化
counter=10
#ループを6回繰り返す
まで
do
echo”counter=$counterの現在の値”
((counter–))
done
出力:
スクリプトを実行します…..
トップへ
ユーザー入力に基づいてループを終了するまで
特定の条件に基づいてループを終了します。 ユーザーの入力に基づいてuntilループを終了する方法を、次の例に示します。 終了条件に応じて、$numberの値が50より大きい場合、ループは終了します。 Number numberの値はループ内で増分されません。 だから ループは、50を超える数が入力として取得されるまで、ユーザーからの入力を取得し続けます。
#数値を初期化する
number=0
#数値データのパターンを設定する
pattern=’^+$’
# 終了条件を設定します
まで
do
echo-n”数字を入力します:”
読み取り番号
#入力値が数字であるかどうかを確認します
if! ]
次に
echo”エラー”: 数字ではありません”
number=0
else
echo”$numberを入力しました”
fi
done
出力:
スクリプトを実行します。
スクリプトは、入力値4のループを再度反復し、入力値ggのエラーメッセージを表示し、入力値54のループを終了します。
Go to Top
ネストされたwhileループを使用する
ループが別のループ内で宣言されている場合、それは無限ループと呼ばれます。 次の例は、ネストされたwhileループの使用方法を示しています。 ここでは、最初のwhileループは2回反復され、最初のループ内の2番目のwhileループは3回反復されます。 ループの合計反復は2×3=6回です。 $i変数と$j変数は、これらのループの反復を制御するために使用され、各ステップのこれらの変数の値が出力として出力されます。
#Iとjを初期化します
i=1
j=1
#iの終了条件を設定します
while
do
#jの終了条件を設定します
while
do
#iとjの現在の値を表示します
printf”i=%d,j=%d\n”prin i$j
j=1
((i++))
done
j=1
((i++))
done
出力:
スクリプトを実行します。
トップに移動
スクリプトでバックグラウンドタスクが開始されるまでループをスリープ/待機する
‘&’シンボルを使用することで、任意のプロセスをバックグラウンドタスクで実行することができます。 この例では、until loopを使用してバックグラウンドでプロセスを実行し、sleepコマンドで指定された時間に基づいてループを終了する方法を示します。 ここで、$cnt変数は、ループを終了するために使用されます。 ループはバックグラウンドプロセスを開始し、”output”という名前のテキストファイルに出力を書き込みます。txt”を1秒間表示します。 その後、ループの終了条件がチェックされ、falseが返されます。 次に、スクリプトは”Sleeping…”というメッセージを出力し、3秒後にスクリプトを終了します。
#カウンタを初期化
cnt=1
#終了条件を設定
まで
do
echo”バックグラウンドプロセスが実行されています”;
#1秒待ち
sleep1;
((cnt++))
done>出力。txt&
#3秒待つ
echo”Sleeping…”
睡眠3
出力:
スクリプトを実行します。
スクリプトの出力を確認します。
Go to Top
whileループを使用して終了していないps出力からpidを読み取る
‘ps’コマンドは、システムの実行中のすべてのプロセスに関する情報を取得するため ユーザー id、PID、cpu使用率、メモリ使用率など、実行中のプロセスに関する詳細情報を提供します。 次の例は、whileループを使用して’apache’に関連する実行中のプロセス情報を読み取る方法を示しています。 ここで、ifs変数は、各プロセスのPIDを改行で出力するために使用されます。 次に、ユーザーが任意のキーを押してスクリプトを終了するのを待ちます。
#フィールド区切り文字を設定
ifs=”
while
do
#apacheの実行中のすべてのプロセスidを取得
pid=`ps-ef|grep”apache”|awk'{print2 2″プロセスが実行されています。..
echo”press any key to terminate”
if read-R-N1;then
break
fi
done
#フィールド区切り文字の設定を解除
unset IFS
出力:
スクリプトを実行します。
‘apache’に基づく実行中のすべてのプロセスのPIDが出力に表示されます。
トップに移動
ループを使用してファイル内の任意の文字列を検索し、終了
monthという名前のファイルを作成します。以下に示すbashスクリプトをテストするための次の内容のtxt。
txt
February
March
April
May
June
July
August
September
October
November
December
‘while’ループは、月を読み取るために次の例で使用されます。txtファイルを1行ずつ。 いずれかの行に値’June’が含まれている場合は、”Enjoy summer vacation”と出力され、スクリプトから終了します。
#ファイル名を
filename=”month”と読むように設定します。
if];
then
echo”夏休みを楽しむ”
exit0
else
echo line line
fi
if];
then
echo”夏休みを楽しむ”
exit0
else
echo fi line
fi
then
echo”夏休みを楽しむ”
exit0
else
echo fi line
fi
then
echo”夏休みを楽しむ”
exit0
else
echo fi line
fi
then
echo fi line
fi
完了<filename filename
出力:
スクリプトを実行します。
ここでは、ファイルmonthに’June’が存在します。ループを終了するtxt。 したがって、’June’の後の他の月の名前はループによって読み取られません。
Go to Top
bashとcurlを組み合わせてurlからのデータを評価する
データは、HTTP、FTP、TELNETなどのサポートされているプロトコルで’curl’コマンドを使用して、bashの任意のネットワー これはコマンドラインツールです。 次の例では、forループを使用してURLからのデータを評価するために’curl’コマンドを使用する方法を示します。 ここで、forループはurlのリストを読み取り、curl内の各URL値を渡し、URLから受信したデータを出力します。
#リストから各URLを読み取ります
内のurlのために”yahoo.com””youtube.com”
do
#各URLのHTTP応答コードを出力
echo echo url;curl-v-m5-s$1″url url”|grep HTTP/1.1;
done
出力:
スクリプトを実行します。
Go to Top
ポートからのデータの読み取りwhileループを使用してnetcatによって送信
‘netcat’コマンドは、tcpまたはudpプロトコルを使用してネットワーク経由でデータを読み書きするために使用されます。 ‘nc’コマンドはbashで’netcat’コマンドを実行するために使用されます。 次の例は、whileループでの’nc’コマンドの使用を示しています。 ここでは、スクリプトはncコマンドを使用してポート1234に接続しようとし、接続できる場合は他の端末にメッセージを出力します。 別のターミナルウィンドウまたはタブを開いて、’nc localhost1234’というコマンドを実行して接続する必要があります。 接続を確立した後、任意のメッセージをある端末から別の端末に転送することができます。
echo”ポート1234でリッスンしています。..
if;then
echo”Bye”
break
else
echo”text text”
fi
#ポートが接続されているときにメッセージを出力する
完了<<((printf”welcome.\r\nTypeいくつかのメッセージ:”|/nc-l1234)
出力:
ターミナルでスクリプトを実行し、ポート1234でリスニングを開始します。
次に、別の端末を開き、次のコマンドを実行して、最初の端末
と通信します。
これは、第二の端末に歓迎メッセージが表示されます。 ユーザーが2番目の端末に何かを入力すると、最初の端末に表示されます。 ユーザーが2番目の端末で’quit’と入力すると、最初の端末に’Bye’というメッセージが表示されてスクリプトが終了します。
Go to Top
ping URLループを使用して
サイトのURLで’ping’コマンドを実行することで、任意のウェブサイトがライブであるかどうかを知ることができます。 ‘ping’コマンドは’google.com’次の例では、インターネット接続が動作しているかどうかを確認します。 Whileループはスクリプト内で5回反復し、pingを試みますgoogle.com….. サーバーが応答すると、「インターネットが動作しています」と表示され、ループが終了します。 ループが5回反復処理され、サーバーの応答が得られない場合、「インターネット接続なし」と表示されます。
#カウンタを設定する
count=5
while]
do
#pingを試してみてくださいgoogle.com
平c1google.com
c=$?
#ステータスコードを確認します
if]
then
echo”インターネットが動作しています”
exit0
fi
#カウンタをデクリメントします
((count–))
done
echo”インターネッ”
出力:
スクリプトを実行します。
インターネット接続が正常に動作している場合は、同様の出力が表示されます。
Go to Top
ループとレコード出力を使用してバッチモードでtopを実行する
‘top’コマンドは、システムリソースの使用状況を調べ、さまざまなタスクを管理し、実行中 Forループを使用してバッチモードで’top’コマンドを実行し、レコードをテキストファイルに保存する方法を次の例に示します。 ここでは、-bオプションはバッチモードで’top’コマンドを開始するために使用され、-pオプションは監視するプロセスidを設定するために使用されます。 ‘Top’コマンドの出力はoutputに保存されます。txtファイル。
#ループは5回反復し、topコマンドを実行します
for((i=0;i<5;i++))
do
top-b-p2875-n1/tail-1>>出力します。txt
done
Output:
まず、次のコマンドを実行して、実行中のプロセスのリストを検索します。
ここで、スクリプトを実行します。
次のコマンドを実行して、スクリプトの出力を表示します。
Go to Top
結論
ループは、さまざまな種類の単純または複雑なタスクを実行するために、さまざまな方法でbashで使用できます。 リストや配列の取得、ファイルの読み取り、コマンド出力などのさまざまなタスクにbashで3つのタイプのループを使用する方法 この記事では、非常に簡単な例を使用して示されています。 これらの例が、読者がbashループの使用法をより明確に理解するのに役立つことを願っています。