IT pass (Informational Training program with a spirit of self

ITPASS
Informational Training program
with a spirit of self-help
シェルスクリプト
流体地球物理学教育研究分野
B4 池田 諒
2016/08/08
目次
• シェルスクリプトの目的
• シェルスクリプトの例
• シェルスクリプトの概要
– 順次構造
– 判断構造
– 繰り返し構造
• まとめ
• 参考文献
ITPASS
Informational Training program
with a spirit of self-help
シェルスクリプトの目的
• 一連の作業をまとめて処理させる
– 自分は楽をする
• 既存のコマンドの組み合わせで新しいコマ
ンドを作る
– 例:ファイルのバックアップをとる
• 毎日, 毎時間, …
file.txt
hogehoge
………….
………….
file_2016-08-08.txt
複製
hogehoge
………….
………….
ITPASS
Informational Training program
with a spirit of self-help
シェルスクリプトの例
• 手動でやる場合
$ date ‘+%Y-%m-%d’
←日付を表示
2016-08-08
$ cp file.txt file_2016-08-08.txt
↑ ファイルをコピー
$ ls
file.txt
file_2016-08-08.txt
↑ 手動で作成されたファイル
ITPASS
Informational Training program
with a spirit of self-help
シェルスクリプトの例
• シェルスクリプトで行う場合
$ cat makebackup.sh
←シェルスクリプト
ファイルの中身を見る
#!/bin/bash
NICHI=`date ‘+%Y-%m-%d’` ←日付を変数に代入
cp file.txt file_${NICHI}.txt
↑ ファイルをコピー
$ ./makebackup.sh
←シェルスクリプト
ファイルを実行
$ ls
file.txt
file_2016-08-08.txt
makebackup.sh
↑シェルスクリプトによって
自動的に作成されたファイル
ITPASS
Informational Training program
with a spirit of self-help
シェルスクリプトの概要
• 複数のコマンドを順に書き記す
• シェル変数を利用して汎用性を持たせる
• 構造化プログラミング (制御構造を持たせ
る)
– 順次構造
– 判断構造
– 繰り返し構造
ITPASS
Informational Training program
with a spirit of self-help
シェルスクリプトの概要:順次構造
処理 A
処理 B
処理 C
ITPASS
Informational Training program
with a spirit of self-help
シェルスクリプトの概要:順次構造
#!/bin/bash
a=$USER ← hogehoge
b=$PWD ← /home/hogehoge
echo “Now,” $a “is in” $b
Now, hogehoge is in /home/hogehoge
ITPASS
Informational Training program
with a spirit of self-help
シェルスクリプトの概要:判断構造
条件
NO/条件2
処理 A
YES/条件1
処理 B
処理 A
処理 B
処理 C
ITPASS
Informational Training program
with a spirit of self-help
シェルスクリプトの概要:判断構造
…
if
[ $TENSUU –ge 80 ]
then
処理 A
SEISEKI=“優”
elif [ $TENSUU –ge 70 ]
処理 B
then
SEISEKI=“良”
elif [ $TENSUU
–ge
処理
C 60 ]
then
SEISEKI=“可”
else
SEISEKI=“不可”
fi
…
ITPASS
Informational Training program
with a spirit of self-help
シェルスクリプトの概要:繰り返し構造
条件
YES/条件1
処理 A
NO/条件2
処理 B
ITPASS
Informational Training program
with a spirit of self-help
シェルスクリプトの概要:繰り返し構造
…
i=1
while [ $i –le 100 ]
do
echo $i > text${i}.txt
i=$(( $i + 1 ))
done
…
100
1
2
…
ITPASS
Informational Training program
with a spirit of self-help
まとめ
• シェルスクリプトは, 作業を自動化して楽を
するための台本
– 既存のコマンドを組み合わせて作る
– 条件分岐とループで構造化
– レポート課題を通じて練習
ITPASS
Informational Training program
with a spirit of self-help
参考文献
• ITPASS 実習 2015「シェルスクリプト」
• https://itpass.scitec.kobeu.ac.jp/exp/fy2015/140807/lecture_shellscript/pu
b/
• 地球および惑星大気科学実習 ITPASS
2010「シェル, シェルスクリプト, エディタ vi」
• http://itpass.scitec.kobeu.ac.jp/~itpass/exp/fy2010/100507/lecture/pub/
• Newham, Rosenblatt 著, 株式会社クイー
プ 訳, 「入門 bash 第2版」オライリー・ジャ
パン (1998)
ITPASS
Informational Training program
with a spirit of self-help
実習の進めかた
• ◎は実習時間内に終わらせてください
– 時間がなければ他はやらなくてもよい
– ただし, レポートは◎以外の範囲も必要かも
…
ITPASS
Informational Training program
with a spirit of self-help