ラズベリーパイを使ったプログラミングの入門的な記事です。
シェルスクリプトの初歩について書きます。
シェルスクリプトとは?
シェルスクリプトとは、シェルと呼ばれるプログラムによって解釈され、実行されるスクリプトです。
いろいろなシェル(bash, ksh, zsh, csh, tschなど)がありますが、ここではもっとも基本的なsh(Bourne Shell)について取り扱います。
sh スクリプトでHello world.
shスクリプトで書いたプログラムの例です。
1 2 3 4 5 | #/bin/sh echo "Hello world." exit 0 |
とてもシンプルな例で、プログラムの入門として必ずといっていいほど例に上げられるものです。
まず1行目ですが、これはシバンと呼ばれるものです。起動してスクリプトを読み込むインタプリタ(ここではshというシェル)を指定する行です。
2行目では、見やすいように空白行を入れました。空白行では何も実行されません。
スポンサーリンク3行目はechoというコマンドを使用しています。echoについては多くの説明が必要になるのですが、ここでは大雑把に、使用しているターミナルソフト上に後続の文字列”Hello world.”を表示するコマンドと考えてください。
4行目は2行目と同じく空行。
5行目はスクリプトを終了するコマンドです。0は終了ステータスと呼ばれるものです。
さて、これを実行すると、
1 | Hello world. |
と表示されるのですが、少し手順を踏む必要があります。最初ですので、以下で少し丁寧に説明します。
シェルスクリプトの実行の方法
まず、このプログラムを入力しなければなりません。そのために、エディタと呼ばれるプログラムを使用します。
エディタはお好みのものを使用しても構いませんが、Linux系のOSで初めてエディタを使用するのであれば、leafpadを使用するのが簡単です。
ターミナルソフトを開いて、プロンプトが表示されたら
1 | $ leafpad |
と打ち込んでみましょう。($がプロンプトですが、設定により、ユーザー名やホスト名が一緒に表示されるかもしれません。ここでは省略します。)
Windowsのメモ帳のようなソフトが起動するはずです。
このエディタで、上記のサンプルプログラムを書いたら、保存します。ファイル名はprog1.shとしましょう。
最初はわかりやすいようにホームディレクトリに保存します。
次に、簡単のためにもう1つターミナルソフトを開いて、その上で、
1 | $ ls |
と打ち込んでみると、今作ったprog1.shという名前が表示されると思います。
ここで、
1 | $ chmod +x prog1.sh |
と打ち込みます。これはファイルの実行権を付与するのですが、ここでは実行のためのおまじないと考えてください。
このあと、
1 | $ prog1.sh |
と打ち込んで実行すると、”Hello world.”と表示されるはずです。
コマンドラインシェル
ところで、ターミナルを起動し、例えばlsなどと実行するとファイルの一覧が表示されますが、これはコマンドラインシェルがすでに実行されている状態になっていて、これがlsとコマンドを解釈して実行している、という状態になっています。
このとき動いているコマンドラインシェルは、Raspbianをした後に特になにも変更していなければ、bashです。
コマンドには、内部コマンドと外部コマンドがあります。内部コマンドはシェルに内蔵されている関数、さきほどのlsは外部コマンドです。
試しに次のように実行してみましょう。
1 2 | $ type cd $ type ls |
前者のcdは内部コマンド、lsは外部コマンドで/usr/binの下に置かれているということが、表示された情報でわかると思います。bashがそれらを呼び出して実行しているのです。
さて、内部コマンド/外部コマンドは余談でしたが、このコマンドたち、実はシェルスクリプト上でも同じように実行できるのです。
1 2 3 4 5 6 7 | #!/bin/sh pwd date ls exit 0 |
というプログラムを作って、実行してみましょう。ファイル名をprog2.shとします。
pwd は今自分がいるディレクトリの階層、dateは今日の日付や現在時刻、lsは今自分がいるディレクトリのファイルリストをそれぞれ表示します。
このプログラムをすると、それらを順に実行してくれるのがわかると思います。
kろえらはもちろん、コマンドライン上で1つずつ打ち込んでも、同じことです。
1 2 3 | $ pwd $ date $ ls |
やってみてください。
つまり、上記のプログラムを使うと、複数のコマンドのセットを自動的に実行してくれることになるのです。
シェルスクリプトを学ぶには、このような簡単な例で、複数のコマンドのセットを自動実行するところから始めるとよいでしょう。