シェルプログラミング-3つのループステートメントとループからジャンプするためのブレークまでのエコーパラメータ拡張は、ループを中止し続けますIFSフィールドセパレータ-図

ここに画像の説明を挿入

エコーパラメータ

  • echo -n#は改行出力がないことを意味します
    ここに画像の説明を挿入

  • echo -eエスケープ文字を出力し、エスケープされたコンテンツを画面に出力します(二重引用符で使用する必要があります)

  • 一般的に使用されるエスケープ文字は次のとおりです。\b \c \n \f \v \t \r \\

    • \ b:エスケープした後、バックスペースキー(バックスペース)を押すのと同じですが、「\ b」の後に文字がある場合のみ:「\ b」は前の文字を削除することを意味し、「\ b \ b」は最初の2文字
      ここに画像の説明を挿入

    • \ c:改行なしで出力。「\ c」の後に文字がない場合、関数はecho -nと同等ですが、「\ c」の後に文字が残っている場合、「\ c」の後の文字はそうではありません。出力
      ここに画像の説明を挿入

    • \ n:改行、出力される文字は「\ n」からの改行で始まります。Linuxでは、\ nはキャリッジリターンの意味を持ちます
      ここに画像の説明を挿入

    • \ f:改行ですが、改行の後の新しい行の先頭が前の行の末尾に接続されています
      ここに画像の説明を挿入

    • \ v:\ fと同じ

    • \ t:エスケープした後、タブ、つまり水平タブを挿入することを意味します
      ここに画像の説明を挿入

    • \ r:カーソルは行の先頭に移動しますが、折り返されません。これは、「\ r」の後の文字を使用して、「\ r」の前の同じ長さの文字を上書きするのと同じですが、文字がない場合です。 「\ r」の後、「\ r」「前の文字は上書きされません
      ここに画像の説明を挿入

    • \\:「\」自体を挿入することを意味します
      ここに画像の説明を挿入

ループステートメント

forループステートメント

  • 異なる変数値を読み取って、同じコマンドのセットを1つずつ実行します(まとめてトラバーサル操作と呼ばれます)
  • フォーマット
for 变量名 in 取值列表
do
  命令序列
done

ここに画像の説明を挿入

  • 最も単純なforループの例

    • 発現の最初の方法:でI {1 ... 10} -でI {1 ... 10 ... 2}反復的に各ループの後に2を加算し2つの手段
      ここに画像の説明を挿入
    • 式の2番目の方法:私は$(配列1〜10)に-私は$(配列1 2 10)に上記と同じ意味を持っています
      ここに画像の説明を挿入
    • 3番目の表現方法:(i = 1; i <10; i ++) - (i = 1; i <= 10; i + = 2)上記と同じ意味
      ここに画像の説明を挿入
  • ライブ学習とアプリケーションの例1
    ユーザーをバッチで追加します。ユーザー名はusers.txtファイルに保存され、各行で、初期パスワードは123456に設定されます。
    ここに画像の説明を挿入
    ここに画像の説明を挿入

  • ライブ学習の例
    2IPアドレスに基づいてホストのステータスを確認します。IPアドレスはipadds.txtファイルに1行に1つずつ保存されます。pingコマンドを使用して、各ホストの接続を確認します。
    ここに画像の説明を挿入
    ここに画像の説明を挿入

whileループステートメント

  • 特定の条件を繰り返しテストし、条件が真である限り繰り返し実行します
  • フォーマット
while 条件测试操作
do
  命令序列
done

ここに画像の説明を挿入

  • 簡単な操作(出力コンテンツへの反復の挿入位置には一定の関係があります)
    ここに画像の説明を挿入
  • whileステートメントの適用例
    1.ユーザーをバッチで追加する:ユーザー名はstuで始まり、番号順に番号が付けられている必要があります。合計20、つまりstu1 ... stu20があり、パスワードは123456に設定されています。
    ここに画像の説明を挿入
  • アップグレードの難しさ
    2.商品価格ゲームを推測する:変数RANDOMを介して乱数を取得し、ユーザーに回数を推測して記録するように促し、推測後にループを終了します。
  • RANDOMは0から32767までのランダムな値をランダムに取得できます
  • 0〜25の範囲の数値を生成する場合:$(($RANDOM%26))
  • 1〜68の範囲の数値を取得する場合: $(($RANDOM%68+1 ))
  • 6〜87の範囲の数値を取得する場合: $(($RANDOM%82+6 ))
    ここに画像の説明を挿入
    ここに画像の説明を挿入

ループステートメントまで

  • 特定の条件を繰り返しテストし、条件が確立されない限り繰り返し実行します
  • whileと順番にwhileと同等で、少し味がないように見えるまで
until 条件测试操作
do 
  命令序列
done

ここに画像の説明を挿入

  • 簡単な操作まで
    ここに画像の説明を挿入
  • untilステートメント
    1のいくつかの例。1から50までの合計値を計算し、ループ累積によって計算します。
    ここに画像の説明を挿入

ループから抜け出す

  • ブレークブレークを含むループからジャンプします
  • シンプルなダブルループ
    ここに画像の説明を挿入
    ここに画像の説明を挿入
  • 内側のループの単層ループから飛び出します
    ここに画像の説明を挿入
    ここに画像の説明を挿入
  • ブレークはシーケンシャルです

ここに画像の説明を挿入

  • ブレーク2:ループの2番目のレイヤーからジャンプした後の数は、ループから外れたレイヤーの数であることを意味します

単一のループを中止し続ける

  • 続行ループ内のコマンドを中止しますが、コマンド全体を完全に停止するわけではありません
    ここに画像の説明を挿入
    ここに画像の説明を挿入
  • whileループで
    ここに画像の説明を挿入
    continueを使用することはお勧めしません。#Continueはwhileで使用されます。現時点では、反復コードの位置は非常に重要であり、コード全体の結果に影響します。

IFSフィールドセパレータ

  • IFSフィールドセパレータに
    デフォルトでスペース、タブ、および改行が含まます\t\n

users.txtで編集されたコンテンツにスペースがある場合
ここに画像の説明を挿入
ここに画像の説明を挿入

  • IFS=$' \t\n'
    ここに画像の説明を挿入
  • IFS
    IFS=$'\n'の変数を再定義して、改行文字のみを認識することができます。
  • IFSの変更やその他の操作を行った後、スペースを認識できない場合はどうすればよいですか?
IFS=$'\n'    #进行重新定义变量IFS只识别换行符
OLDIFS=$' \t\n'   #重新定义之前的内容
.......
IFS=$OLDIFS   #把定义的变量重新定义给IFS

おすすめ

転載: blog.csdn.net/weixin_53496398/article/details/114446196