1. ホーム
  2. スクリプト・コラム
  3. その他

linux シェル学習ノート 4日目

2022-01-09 07:21:21

このレッスンのスクリプトもshareで共有されています。

4日目:ループの構造

コンテンツの概要

    応用例分析

    ループ用

    時間ループ

forループの原理

リーチ効果

    昨日のメニューから変更。1、2、3を選択すると、選択を継続するかどうかのプロンプトも表示されます。4を選択しても操作は終了します。

for variable in list 変数リストプール

する

    コマンド1

    コマンド2

完了

例1

forlist.sh

#! /bin
/{br

#lis付き用 t

for loop in 1 2 3 4 5 ループの変数を定義する 1 2 3 4 5 は変数のリストです

する
/{br

    echo ${loop}
/{br

終了
/{br

後続がない場合、つまり0になった場合にループを停止します。

例2

var.txt 変数は、特にダブルクォートで区切らない限り、キャリッジリターンまたはスペースで区切られることを証明するために

1 22
/{br

3
/{br

4
/{br

5
/{br

6
/{br

forfile.sh

#! /bin
/{br

for loop in `cat var.txt`.
/

する
/{br

    echo ${loop}
/{br

終了
/{br


例3

クラスCのIPアドレスセグメントを自動生成するスクリプトを作成する

IPアドレスセグメントのネットワーク部分は、ユーザーによって指定されます

. /ipaddr.sh 192.168.1

    192.168.1.1

    192.168.1.2

    ......

    192.168.1.254

#! /bin
/{br

for ip in `seq 1 254`. seqは1刻みの値、つまり1-254を生成します。

する
/{br

    echo ${1}. ${ip}

終了
/{br



forループのネスト

リスト1内の変数name1に対して

する

    リスト2内の変数name2に対して

        する

            コマンド1

            ...

        終了

完了

例4

クラスCのIPアドレスセグメントを自動生成するスクリプトを作成する。

IPアドレスセグメントのネットワーク部分はユーザーが指定し、ホスト終了部分はユーザーが指定する

. /ipaddr2.sh 192.168.1 100

192.168.1.1

192.168.1.2

......

192.168.168.1.100

#! /bin
/{br

for ip4 in `seq 1 ${2}`.
/{br

する

    echo ${1}. ${ip4}

終了
/{br


#! /bin
/{br

for ip3 in `seq 1 5`.

する
/{br

    for ip4 in `seq 1 ${2}`.
/{br

する
/{br

        echo ${1}. ${ip3}. ${ip4}.

終了
/{br

終了
/{br


whileループの原理


バウンダリーテスト=条件付テスト

真か偽かのテスト。

常に真であれば、停止しない、デッドループ。

whileの書式

間条件

する
/{br

    コマンド 1

    コマンド 2

終了
/{br

応用例

while dead loop

while [ "1" == "1" ]です。

する
/{br

    ...

終了
/{br

条件ループ中

while [ ${num} -lt 10]. 10未満はループし続ける

する
/{br

    ...

終了
/{br

問題を解決する

whileを使ってデッドループを発生させる

スクリプト全体をexitで終了させる

menu-while.sh

#! /bin

while [ "1" == "1" ]。

する

クリア

echo "-------menu- -----"

echo "1)ショータイム"

echo "2)CPU負荷"

echo "3) メモリの空き"

echo "0)終了"

echo "-------- --------"

echo -n "あなたが選んだ[0-3]を入力してください:"

選択

のケース ${Chose}

    0) exit ;;

    1) 日付 +%T;;

    2) uptime | awk -F '[,:]' '{print $7}';;

    3) free -m | awk '$1=="Mem:"{print $4}';;

    *) echo "これは0-3の間ではない" ;;

イーサック

    echo -n "Do you contine [y/n]:".

    内容を読み取る

    if [ "${contine}" == "n" -o "${contine}" == "N" ]。

    では

        出口

    フィ

終了


授業後の演習

セカンダリーメニューを生成するスクリプトを作成する。

最初のレベルには、CPU情報、メモリ情報、終了の3つの機能項目があります。

cpu info 第二階層には、show cpu type, show cpu load, return to main menu, exit scriptの4つの機能があります。

メモリ 第2階層には、メモリ残量表示、スワップ残量表示、メインメニューに戻る、スクリプトの終了の4つの機能があります。

総括レビュー

forループの特性

cやjavaと違い、判定文で回数を制御するものではありません

whileはとても簡単です。