linux シェル学習ノート 4日目
このレッスンのスクリプトも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はとても簡単です。
関連
-
linux シェル学習ノート 5日目
-
InstallShield で IIS がインストールされているかどうかを検出するスクリプト
-
[解決済み】必要な形式パラメータに対応する引数が与えられない - .NETエラー
-
[解決済み] クラスパスリソースで定義された名前 'entityManagerFactory' を持つビーンの作成エラー : initメソッドの呼び出しに失敗しました
-
[解決済み】トランスポートエンドポイントが接続されていない
-
[解決済み】Objective-Cで「認識できないセレクタがインスタンスに送信されました」エラー
-
[解決済み】「/etc/apt/sources.list」 E212: Can't open file for writing
-
[解決済み】Javaのメソッド呼び出しが期待される
-
[解決済み】TypeError: リストにはリストしか連結できない(「str」ではない)
-
[解決済み】C++エラー。operator='に一致するものがない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】gitが「変更をコミットするか、マージする前に隠してください」と言うのを解決するにはどうしたらいいですか?
-
[解決済み】C++の<map>に相当するC#は何ですか?[重複しています]
-
[解決済み】dyld: ライブラリがロードされない ... 理由: 画像が見つからない
-
[解決済み】Facebook Graph API のクエリで with=location を使用すると "Uncaught (in promise) undefined" というエラーが発生する。
-
[解決済み】ValueError: すべての入力配列は同じ次元数でなければならない
-
[解決済み】java.util.NoSuchElementException: 行が見つかりません
-
[解決済み】凡例に入れるラベルを持つハンドルが見つからない
-
[解決済み】VC++の致命的なエラーLNK1168: 書き込み用のファイル名.exeを開けない
-
linuxシェル学習記の最終章、古いものを温め、新しいものを知る
-
スクリプトエラーの解決方法 現在のページのスクリプトエラーの解決方法をまとめてみました。