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

linuxシェル学習記の最終章、古いものを温め、新しいものを知る

2022-01-16 01:18:51

スクリプトのヒント

スクリプトファイル名の命名規則

        ファイル名に含まれる文字

        文字、数字、". "、"_"、"-"、注意:スクリプトファイル名は数字で始めることはできません。

スクリプトファイル名には、英単語やフレーズ、短い文章の略語を使うようにしましょう。

スクリプトのバージョン管理

        スクリプトの役割. マスターバージョン番号. 修正回数. シェルタイプ

変数の命名規則

        変数名は数字とアルファベットで構成することができる

        変数名はすべて小文字の英字で表記する

        変数名には可能な限り略語を使用し、できれば6文字以内とします。

        変数名} 例: ${port},${ipaddr}...

スクリプトコードコメント指定

        スクリプトコードのコメントには "#" と ";(semicolon)" の両方を使用することができます。# は一般に、コードが何をするか、どのように使用されるかを説明するための説明的なコメントによるものです。

        そして、;は通常、例のコメントに使われます。特に、設定ファイルの一部でよく使われるので、スクリプトのコメントもこの2つの方法に従います。

引用符の使用に関する仕様

        一重引用符の使用は控えめに

        非常に特殊な文字の場合、特殊な意味を持たせるために「バックスラッシュ」を使用します。

        引用符で囲まれた文字をマスキングする場合、特殊記号そのものが印刷されない限り、一般に一重引用符の内側には他の引用符は適用されません。

        シェルコマンドの実行にバッククォートを使用する場合、一般にバッククォートの中に他のクォーテーションを付加します。

スクリプト関数定義指定

        変数名は数字とアルファベットで構成することができる

        ハンプ・ネーミングを使用する(2番目の単語から始め、各単語の最初の文字を大文字にする)。

        知名度が高い場合を除き、名前に略称を使わないようにする

        名前は2つまたは3つの単語で構成することができますが、通常は3つまでとします。

テキスト出力のタイポグラフィ

1日目のコース終了後の課題

1. grep "20081011" text.txt でこの日のデータを取得する。

2. grep "200804" text.txt この月のデータを取り出します。

3. grep "200806" text.txt | grep -v "-" 1ヶ月分の上昇データを取得する。

4. grep "200807" text.txt | grep -v "-" | wc -l アップしている日数を統計値で一覧表示する。

5. grep "200808" text.txt | sort -k5 -n | tail -1 でアップ日数を決定し、tail で最終行を取得する。

grep "200808" text.txt | sort -k5 -r |head -1 で上昇を判断し、head が最初の行を取得する。

6. grep "200810" text.txt | awk '{if($4>0){print $1,$5}}' 上昇データの時刻と上昇率を1月に取り出す

7. grep "200811" text.txt | awk '{if($4>5 && $4<20){print $0}}'. 行全体を取り出す間隔を決定する

スクリプトコード例解析1

    スクリプトを実行し、以下のアドレスに自動的にpingを打つシェルスクリプトを作成します。

        192.168.1.1,192.168.1.31

    上記のIPアドレスは、スクリプトに直接書き込まれています。実行が完了すると

には、Ping送信可能なIPアドレスと不可能なIPアドレスが表示されるはずです。

    #! /bin/bash

    if ping 192.168.1.1 -c 1

では

    echo "192.168.1.1 online"

さもなければ

    echo "192.168.1.1 offline"

フィ

if ping 192.168.1.31 -c 1

では

    echo "192.168.1.31 online"

さもなければ

    echo "192.168.1.31 offline"

フィ

スクリプトコード解析例2

解析1を修正し、IPをiplist.txtから読み込む。

#! /bin/bash

for ip in `cat iplist.txt`.

する

    if ping $ip -c 1

    では

        echo "${ip} online"

    さもなくば

        echo "${ip} offline"

    フィ

完了

スクリプトコード例解析3

解析2を修正し、無駄な情報を削除

#! /bin/bash

for ip in `cat iplist.txt`.

する

    if ping $ip -c 1 >/dev/null 2>&1

    では

        echo "${ip} online"

    さもなくば

        echo "${ip} offline"

    フィ

完了

スクリプトコード解析例4

レコードを生成するために解析3を修正する

#! /bin/bash

>hoststatus.txt

for ip in `cat iplist.txt`.

する

    if ping $ip -c 1 >/dev/null 2>&1

    では

        echo "${ip}オンライン" |tee -a hoststatus.txt

    さもなければ

        echo "${ip} offline" |tee -a hoststatus.txt

    フィ

完了

スクリプトコード解析例5

IPアドレスのプールを生成し、255個のIPを生成し、マルチスレッドPingを実装するために解析4を修正する。

#! /bin/bash

iplist

for ip in `seq 1 255`.

する

    echo "192.168.1.${ip}">>iplist(アイプリスト)

完了

#! /bin/bash

>hoststatus.txt

テンポラリ

fastping()

{

    if ping ${1} -c 1 >/dev/null 2>&1

    では

        echo "${ip}オンライン" |tee -a temp

    さもなければ

        echo "${ip} offline" |tee -a temp

    フィ

}

for ip in `cat iplist.txt`.

する

    fastping $ip &

完了

待つ

sort -t. -k4 -n temp >hoststatus.txt

rm temp

temp . /ping.sh スクリプトの実行時間をテストします。