今日学ぶこと
- シェルスクリプト
シェルスクリプトとは
複数のコマンドラインをシェルで実行できるようにまとめたファイル。
これまでパイプラインを駆使して複数のコマンドを繋いだが、さらに複雑な操作に対応できるといえる。
条件分岐やループなどプログラミング言語のような機能も使うことができ、シェルスクリプトを実行するだけで何度も同じ操作を再現できる。
シェルスクリプトを作ってみる
シェルスクリプトを作るうえでまずは"シバン"を書くことを理解する。
これは「どのシェルで実行するか」を指定するための記述。
#!/bin/bash
この次の行からコマンドを実際に記述していくこととなる。
それでは実際に作ってみる。
$ mkdir ~/bin
$ cd bin
$ vim test.sh
mkdirでシェルスクリプトの置き場をつくったあとにvimでtest.shを新規作成。
#!/bin/bash
ls -F | nl
シバンの2行目以降が実行されることとなるため、実際には3行目、4行目と追記していくことが可能。
インサートモードからノーマルモードに切り替えて、保存後、実行権限を与える。
$chmod 755 test.sh
そして作成したtest.shを実行してみる。
$ test.sh
1 test.sh*
記述したコマンドが実行されていることが確認できた。
繰り返し処理
forを用いて繰り返し処理を行ってみる。
今回はvimでtest.shを編集して書いてみる。
#!/bin/bash
for i in 1 2 3
do
echo $i
done
保存後、実行。
$ test.sh
1
2
3
条件分岐
ifを使用した条件分岐を試してみる。
変数TESTが1の場合"1"と表示する。
#!/bin/bash
TEST=1
if [ $TEST -eq 1 ]; then
echo "1"
else
echo "none"
fin
ここで細かいところだが個人的な注意点。
if [ $TEST -eq 1 ]
この[]の前後の部分などに適切にスペースが入っていないとmissingとなり、うまく実行されなかったため、正確にスペースを空けることに注意。
次にcaseを使用した条件分岐。
キーボードからの値も取得してみる。
#!/bin/bash
$ read -p: TEST
case "$TEST" in
"a" ) echo "A" ;;
"b" ) echo "B" ;;
"c" ) echo "C" ;;
esac
保存後、実行してみる。
$ test.sh
:a
A
しっかりと"a"を取得し、"A"を返していることが確認できた。
おつかれまでした
今回も基本的な部分かと思いますがシェルスクリプトについて簡単に実践してみました。
利便性を最初に理解でき、これまでの学習してきたvimも活用できて復習にもなったかと思います。
そしてまさに条件分岐、繰り返しはプログラミング言語のような機能で、自分としてはすんなり理解はできました。ただ同様にスペースなど正確に入力しないといけない点とうまく動かないときはエラー文をしっかり確認するべき点がこの先扱う際に注意していきたいです。