シェルスクリプトの作成方法について
■目次
(1)シェルスクリプトでHello World
(2)シェルスクリプトで変数/引数を使う
(3)シェルスクリプトで条件分岐を記述
(4)シェルスクリプトで繰り返し(ループ)を記述
(1)シェルスクリプトでHello World
(1-1)viエディタ等で拡張子が”.sh”のファイルを新規作成する。
# viエディタで新規ファイルの作成 vi HelloWorld.sh
(1-2)以下の文言を記述し、スクリプトを保存する。
「#!/bin/sh」は定型句(おまじない)です。
●シェルスクリプト記述
#!/bin/sh echo 'Hello World'
(1-3)実行権限を付与し、実行した結果を確認する。
# 実行権限の付与 chmod +x HelloWorld.sh # スクリプトの実行 /tmp/HelloWorld.sh
>目次にもどる
(2)シェルスクリプトで変数/引数を使う
(2-1)最も基本的な変数の使い方
以下の①に従って変数を定義し、②で変数の値を出力する。
注意すべき点として「=」の前後にスペースを入れない事(入れると以下のNG例のようにエラーとなる)
●シェルスクリプト記述
#!/bin/sh # ①value1という変数を定義 value1=1500 # ②以下の形式で出力 echo $value1 echo "$value1" echo "${value1}"
●実行結果
NG例
「value1= 1500」と=の後に半角スペースが入ってしまったためにエラーになる。
OK例
(2-2)最も基本的な引数の使い方
引数については”$n”で記述します。”n”は”n個目の引数”の意味の”n”です。
●シェルスクリプト記述
#!/bin/sh echo $0 # 0個目の引数を出力(シェルスクリプト名) echo $1 # 1個目の引数を出力 echo $2 # 2個目の引数を出力 echo "${0} ${1} ${2}" # 0個目~2個目の引数を連結して出力
●実行結果
上記スクリプトを引数を指定して実行した結果は以下。
>目次にもどる
(3)シェルスクリプトで条件分岐を記述
条件分岐(if文)の最も基本的な形は以下で記述します。
・『if [条件] then [結果]』で記述する
・複数条件記述する場合はelse ifに相当する『elif [条件] then [結果]』で記述する
・if条件が複数個になる場合、ANDに相当する『-a』で記述する
・最後に忘れずに『fi』句を書いて条件分岐を閉じる
●シェルスクリプト記述
演算子 | 意味 |
-ge | ≧ |
-gt | > |
-lt | < |
-le | ≦ |
#!/bin/sh if [ $1 -ge 0 -a $1 -lt 30 ] then echo "${1}点なので、赤点再テストと追加課題です" elif [ $1 -ge 30 -a $1 -lt 60 ] then echo "${1}点なので、赤点再テストです" elif [ $1 -ge 60 -a $1 -lt 90 ] then echo "${1}点なので、まずまずです" elif [ $1 -ge 90 -a $1 -le 100 ] then echo "${1}点なので、優秀です" fi
●実行結果
>目次にもどる
(4)シェルスクリプトで繰り返し(ループ)を記述
繰り返し処理(for文)の最も基本的な形は以下で記述します。
◆繰り返し処理は『for [ループ変数] in `seq [Start ~ End]`』で記述します。
→seqの前後は「“(バッククォート)」で囲む点に注意
◆整数演算は『expr [変数1] + [変数2]』で記述します。
→exprの前後も「“(バッククォート)」で囲む点に注意
→演算子の前後は半角スペースを空ける(文字列認識を防ぐため)
◆繰り返しが終了したら、最後に『done』を記述する
●シェルスクリプト(例)
#!/bin/sh total=0 old=0 for num in `seq 1 10` do old=$total total=`expr $total + $num` # +の前後に半角スペースが必要のため注意 echo "前回値(${old})+${num}=${total}" done
●実行結果
>目次にもどる