シェルスクリプト(shスクリプト)というスクリプト言語でプログラムを書いて動かしてみます。
スクリプト言語とは?についてはプログラミングに慣れてから考えるとして、まずはプログラムを書いて実行するという体験をしてみましょう。
小学生の方にもやさしい小さなプログラムを書き、実行して動作を確認するところまで説明します。
sh スクリプトの書きはじめのおまじない
まずはエディタです。
Ubuntu MATE をインストールした方であれば、「Pluma」というエディタが標準で使えるはずです。
画面の左上の「アプリケーション」から辿り、Plumaを起動しましょう。
文字を入力したあと、ファイルを保存したりする方法は、メニュー操作で簡単にできると思います。
スポンサーリンクさて、今から shスクリプト を書くのですが、このスクリプトを書くときには、第1行目に「おまじない」を書きます。
#!/bin/sh
これが何を意味するのかはいずれ調べることにして、sh スクリプトを書く時のおまじないとして、こう書くものと覚えておくことにしましょう。
2行目からは、shスクリプトの文法に従ってプログラムを書いていきます。
Plumaでもプログラムは問題なく書けますが、別の記事で紹介した emacs をすでに手元に準備できたという方は、早速それを使ってみましょう。
プログラムの基本要素を確認する
プログラムの基本要素として、別の記事で以下の4つを上げました。
- 変数
- 表示
- 繰り返し
- 条件分岐
shスクリプトについて、この基本要素を順に見ていきます。
変数
shスクリプトの変数に値を入れるには、以下のように記述します。
1 2 3 |
#!/bin/sh x=123 y='abc' |
一つ目の x という変数には、123 という数値が入ります。これはわかりやすいかと思います。
同じく、二つ目の y という変数には、abc という文字列が入ります。
シングルクォーテーション(')で囲っていますが、この場合はなくても同じです。
ただし、abc def という文字列のように、空白を含む文字列は、以下のようにはかけません。
1 2 |
#!/bin/sh y=abc def |
これはエラーになります。
ですので、シングルクォーテーションで常に囲むようにしておけばよいと覚えておけばよいです。
1 2 3 |
#!/bin/sh y='abc' z='abc def' |
もう一つ、文字列はダブルクォーテーション(")で囲む場合があります。
shスクリプトでは、シングルクォーテーションとダブルクォーテーションとの間に明確な違いがあるのですが、本記事のレベルを超えますので、別の機会に説明します。
表示
sh スクリプトにおいて、変数の中身を表示するコマンドは echo です。
1 2 3 4 5 |
#!/bin/sh x=123 echo $x y='abc def' echo $y |
ここで注意していただきたのは、3行目と5行目です。このように、echo 変数名 と書けば変数の中身を表示することができるのですが、その際に変数に$マークをつけるのです。
これで、echo $x の実行結果は 123、echo $y の実行結果は abc def となります。
繰り返し
繰り返しは、sh スクリプトでは以下のように書きます。
1 2 3 4 5 6 7 |
#!/bin/sh a=0 msg='aaa' while [ $a -lt 10 ];do echo $msg a=`expr $a + 1 ` done |
急に難しくなりました。雰囲気をつかんでもらうためのものとして簡単に説明します。
2行目は変数aに0を入れます(初期化)。
3行目はすでに出てきました。変数msgに文字列を入れています。
変数名はこのように何文字かの長さをもってもOKです。
4行目の while という命令が繰り返しの開始を表します。[]内の条件が成立するまでこの行と7行めまでの間を繰り返します。
[]内は、「変数aが10未満の間」という条件を表す条件文です。
5行目はすでに出てきました。変数msgの中身を表示します。
6行目は、ここでは変数aの値を一つ増やすという意味です。
ここまでを書いて実行したとき、どういう動作になるかわかるでしょうか?
条件分岐
sh スクリプトにおける条件分岐は、以下のように書きます。
1 2 3 4 5 6 7 |
#!/bin/sh a=1 if [ $a -eq 1 ]; then echo "a = 1" else echo "a != 1" fi |
上記のプログラムについて、あとで述べる方法で実行してみていただくとよいですが、そのときに、2行目の a=1 を a=2 に変えたものも実行してみてください。
前者の場合は第4行目、前者の場合は第6行目が実行されることがわかると思います。
sh スクリプトの実行時のおまじない
shスクリプトの実行時にもおまじないがあります。
ファイルを作成したら、ファイル名(拡張子として.shをつけることが多い)をつけて保存しますが、その後、そのファイル名に実行権をつけます。
たとえばファイル名が aaa.sh ならば、ターミナル画面を開けて
chmod +x aaa.sh
と打ち込みます。
こうしておいて、そのターミナル画面から
aaa.sh
と打ち込むと、その sh スクリプトが実行できるのです。
実行権とは何か、など本当は説明が必要ですが、ここでは必要な手続きとしてまずは覚えてください。