文系男子が日和るIT開発~IT知識なしで飛び込んだIT企業

文系男子だからIT企業に就職するなんて考えてもみませんでしたが、日和ながら日々くらいついています。

Linuxに触れたらまずはシェルスクリプトを作って動かしてみよう~初心者向けの入門書

Linuxに触れたら、
まずはシェルスクリプトを作って動かしてみよう。

昔を懐かしんでLinuxUnixに触れ始めた頃、
GUIのOSに慣れていた自分にとってCUIのOSは
ものすごくとっつきにくかった。

とにかく

 

習うより慣れろでした。

Linuxの最低限のコマンドである、cd、ls、pwd、cp、exitを覚える。
その次にviなどでテキストエディタを取り扱えるようにする。
プログラミングをやる人も、サーバを構築する人も、開発者も運用者もviは重要。
ただviの説明は今回は割愛。

viを覚えた次は、やはり自分で考えて動かしてみるステップでLinuxに徐々に馴染んでいきました。

そのことを思い出して、初歩的なところになりますが、要所をご紹介します。

シェルスクリプト

今回はLinuxの標準のシェルであるbashで、
スクリプト言語を組んで、実行してみましょう。

Hello、Woldを表示させる

vi ファイル名

シェルスクリプトを作成開始。
ファイル名は今回は、 01_Test.sh。
作成したスクリプトは下記の通りです。

#!/bin/bash
test01="Hello, World"
echo "$test01" 

簡単に解説します。

解説

1行目の#!/bin/bashは、インタプリタとしてbashを使用することを表しています。
2行目は変数test01に文字列Hello, World」を代入し、
3行目のechoで変数test01の値を表示させています。

シェルスクリプトの実行方法

筆者が知っているシェルスクリプトの実行方法は4種類。

 

実行例と結果

[admin@localhost 01_Test]$ bash 01_Test.sh 
Hello, World

[admin@localhost 01_Test]$ source 01_Test.sh
Hello, World

[admin@localhost 01_Test]$ . 01_Test.sh
Hello, World

[admin@localhost 01_Test]$ ./01_Test.sh
Hello, World

f:id:dreamjourney:20160116213629j:plain

 

シェルスクリプトの様々な変数

 

 

早速使用してみましょう。

02_Test.shというファイルで下記のようなスクリプトを記述します。

[admin@localhost 01_Test]$ cat 02_Test.sh 

#!/bin/bash
echo "$0"
echo "$$"

 

実行します。

[admin@localhost 01_Test]$ ./02_Test.sh
./02_Test.sh
3172

上記より、実行されたシェル名は「02_Test.sh」で、
実行時のシェルのプロセスIDは「3172」であることがわかります。

このスクリプトの終了コードは、

[admin@localhost 01_Test]$ echo $?
0

となっており、「0」で正常に終了されていることがわかる。

f:id:dreamjourney:20160116215211j:plain

 

ここまでは固定の文字列を予めスクリプト言語内に設定しておき、
それを呼び出すだけのものですが、
業務上、そのような決まりきった定数だけの
シェルスクリプトを実行させる機会は少なく、
入力値が実行ごとに変化するような用途のほうが多いでしょう。

入力値はデータベースから取得する場合や、
TeraTermなどのコンソール上からの引数を設定する場合などがあるでしょう。

今回は、後者の、コンソールから入力値を引数として受け取る方法をご紹介します。

シェルスクリプトで使用する引数の種類

  • $数値: 〇番目の引数の値
  • $# : 引数の個数
  • $@ : 引数全部

 

記述したシェルスクリプト

[admin@localhost 01_Test]$ cat 03_Test.sh
#!/bin/bash
echo $1
echo $2
echo ${3}
echo $@
echo $#

実行例。

1番目の引数として、「aaa」
2番目の引数として、「bbbb」
3番目の引数として、「ccccc」
シェルスクリプトに渡す。

[admin@localhost 01_Test]$ ./03_Test.sh aaa bbbb ccccc

結果

aaa
bbbb
ccccc
aaa bbbb ccccc
3

 1行目から3行目は、入力した引数の値がそのまま出力されています。
4行目「aaa bbbb ccccc」は引数をすべて出力しています。
5行目は引数の個数「3」を出力しています。

 

f:id:dreamjourney:20160116221137j:plain

 

いかがでしたでしょうか。
初心者のとき、筆者はこれをまず覚えました。

if文、for文は他のプログラミング言語と構文が似ているため、
シェルは初心者でも、Javaなどを扱ったことがあるかたにとっては
抵抗が少ないかと思います。
ですので、まずはこれだけ覚えてしまえば、
きっとすぐに使いこなせるのではないでしょうか。

 

独学にならないために

習うより慣れろ、ですが、独学はやはり避けたいところです。
基礎や定石を学び、習得し、そこから発展させ、
綺麗なコードをどうやったら書くことができるか、
を考えながらプログラミングを習得するといいと思います。

そこでシェルスクリプトを習得するために、
入門者向けの本をご紹介いたします。

 

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

 

  

[改訂新版] シェルスクリプト基本リファレンス  ??#!/bin/shで、ここまでできる (WEB+DB PRESS plus)

[改訂新版] シェルスクリプト基本リファレンス  ??#!/bin/shで、ここまでできる (WEB+DB PRESS plus)

 

 

UNIXシェルスクリプトハンドブック (Technical handbook series (001))
 

 

 

UNIXシェルスクリプト逆引き大全333の極意

UNIXシェルスクリプト逆引き大全333の極意

 

 

 

 ネットでかなり例文や文法は習得できますが、
本のほうがやはり安心感あるかと思います。