シェルスクリプトの作り方

1.シェルスクリプトの決まり事

シェルスクリプトの作成に際して注意すべき決まり事はいくつかあります。

  • シェバン(shebang) : スクリプトの最初の行に ‘#!/bin/bash‘ のようなシェバンを指定して、使用するシェルを明示します。シェバン(shebang)は、シバンとも呼ばれます。
  • 実行権限 : スクリプトに実行権限を付与する必要があります。’chmod +x script.sh‘ のように行います。
  • コメント : コメント行(#で始まる行)を使ってスクリプトの目的や説明を記述し、可読性を向上させます。

2.具体的な例と手順

 以下に、ファイルをコピーして新しいディレクトリに保存するシンプルなシェルスクリプトの例を挙げ、その手順を示します。

シェルスクリプト例 : copy_files.sh

#!/bin/bash

# コメント: ファイルをコピーして新しいディレクトリに保存するスクリプト

# 使用法の表示
usage() {
    echo "Usage: $0 source_directory destination_directory"
    exit 1
}

# 引数の確認
if [ "$#" -ne 2 ]; then
    usage
fi

# 変数に引数を格納
source_dir="$1"
destination_dir="$2"

# コピー実行
cp -r "$source_dir" "$destination_dir"

echo "Files copied from $source_dir to $destination_dir"

シェルスクリプトの作成手順

手順1:シェルスクリプトの編集

 テキストエディタで新しいファイルを開き、上記のスクリプト内容をコピーします。例えば、’copy_files.sh’ という名前で保存します。

手順2:実行権限の付与

ターミナルで保存したスクリプトに実行権限を与えます。

chmod +x copy_files.sh
手順3:スクリプトの実行

スクリプトを実行する際に、コピー元とコピー先のディレクトリを指定します。

./copy_files.sh /path/to/source_directory /path/to/destination_directory

この例では、指定したディレクトリ以下のファイルを再帰的にコピーします。


 以上が簡単なシェルスクリプトの例とその手順です。これをベースにして、複雑なタスクやプロセスを自動化するスクリプトを作成することができます。

3.シェルスクリプト(copy_files.sh)の解説

3.1 スクリプトの始まり : シェバン
#!/bin/bash

 シェバンは、スクリプトがどのシェルで実行されるべきかを指定します。この例では、Bashシェル (/bin/bash) を使用しています。他のシェルも指定できます。

3.2 使用法の表示関数
usage() {
    echo "Usage: $0 source_directory destination_directory"
    exit 1
}

 ’usage‘ 関数は、スクリプトの正しい使用法を表示し、スクリプトを終了します。’$0‘ はスクリプト自体の名前を指します。

3.3 引数の確認
if [ "$#" -ne 2 ]; then
    usage
fi

 ’$#‘ は引数の数を表し、この例では引数が2つでない場合は ‘usage‘ 関数を呼び出して使用法を表示し、スクリプトを終了します。

3.4 変数に引数を格納
source_dir="$1"
destination_dir="$2"

 引数を変数に格納します。’$1‘ は1番目の引数(コピー元ディレクトリ)、’$2‘ は2番目の引数(コピー先ディレクトリ)です。

3.5 ファイルのコピー実行
cp -r "$source_dir" "$destination_dir"

 ’-r‘ オプションはディレクトリを再帰的にコピーするためのものです。ここでは、cp コマンドを使用してファイルをコピーしています。

3.6. 結果の表示
echo "Files copied from $source_dir to $destination_dir"

コピーが正常に終了した場合にメッセージを表示します。

4.スクリプトの実行

$ ./copy_files.sh /path/to/source_directory /path/to/destination_directory

 このようにして、スクリプトを実行します。引数には実際のディレクトリのパスを指定します。スクリプトは指定したディレクトリ以下のファイルを再帰的にコピーし、結果を表示します。


 この例ではシンプルなファイルコピーのスクリプトですが、これを基にしてさまざまなタスクやプロセスを自動化するスクリプトを作成することが可能です。