本記事にはシェルスクリプトを作成・実行するための基本な作業と一つの例を解説します。

シェルスクリプトとは?
シェルの動作をまとめて記述したスクリプト。決められた文法にそって処理を記述することで、シェルをまとめて処理したり、作業を自動化することができます。

シェルスクリプトについて詳しく知りたい方は以下のURLをご参考ください。
https://www.shellscript.sh/

 

作成・実行の基本

`my-script.sh`などのファイル作成

#!/bin/sh
echo Hello World

実行権限を与えるコマンド

chmod +x my-script.sh

スクリプト実行

$ ./my-script.sh

エイリアスの作成もこんな感じで簡単に作成できます

FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$ alias test_alias="ls"
FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$ test_alias
123456789  backup.sh  test.txt
FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$

関数の定義

function hello_world
{
  echo Hello World
}

オプション取得には`getopts`を利用できます。

while getopts "ad" opt; do
  case $opt in
    a ) echo "option is a" ;;
    d ) echo "option is d" ;;
  esac
done

実行結果はこんな感じです。

FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$ ./backup.sh -a
option is a
FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$ ./backup.sh -d
option is d

シェルスクリプの例

上記で説明したとおりに、シェルスクリプトを作成・実行するのは難しいことではありません。それに自分でスクリプトを書くのは楽しいと思います。例えば、`ls -l`コマンドの綺麗なテーブル表示の結果を返せるようにしてみます。

`ls -l`の結果を取得

OIFS=$IFS; IFS=$'\n'; list_files=($(ls -ls)); IFS=$OIFS;
FILE_COUNTER="${#list_files[@]}"

`header`, `body`, `footer`の関数を追加

function header
{
  echo "---------------------------------------------------------------------------------------"
  echo "               Dir                    User                 Size Created at    File name"
  echo "---------------------------------------------------------------------------------------"
}

function body
{
  index=1

  while [ $index -lt $FILE_COUNTER ]
  do
    echo "${list_files[$index]}"
    index=`expr $index + 1`
  done
}

function footer
{
  total_file_counter=`expr $FILE_COUNTER - 1`
  echo "---------------------------------------------------------------------------------------"
  echo "Total: $total_file_counter files"
}

関数を呼び出す

header
body
footer

実行結果

一般の実行結果と比べたら綺麗になってきました。

FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$ ./list_file.sh 
---------------------------------------------------------------------------------------
               Dir                    User                 Size Created at    File name
---------------------------------------------------------------------------------------
4 -rw-r--r-- 1 FRAMGIA\pham.huy.cuong FRAMGIA\domain^users   10 Th06 15 11:39 123456789
4 -rwxrw-rw- 1 FRAMGIA\pham.huy.cuong FRAMGIA\domain^users 1203 Th06 22 08:24 backup.sh
4 -rw-rw-rw- 1 FRAMGIA\pham.huy.cuong FRAMGIA\domain^users   10 Th06 15 11:39 test.txt
---------------------------------------------------------------------------------------
Total: 3 files

こんな感じで簡単に自分のシェルスクリプトを作成・実行できます。