【Linux入門】シェルスクリプトの引数の利用

概要

 シェルスクリプトでは、実行時に渡される引数を利用して動的な処理を行うことができます。引数を活用することで、スクリプトをより柔軟かつ汎用的に利用できます。

引数の取得

 シェルスクリプト内で引数にアクセスするには、特殊変数 '$1'、'$2'、'$3' などを使用します。これらの変数は、それぞれ1番目、2番目、3番目の引数を表します。

例:myscript.sh

#!/bin/bash

echo "The first argument is: $1"
echo "The second argument is: $2"

このスクリプトを実行する際に引数を与えると、それが変数に代入されて表示されます。

$ ./myscript.sh arg1 arg2
The first argument is: arg1
The second argument is: arg2

全ての引数へのアクセス

全ての引数に一度にアクセスするには、'$@' を使用します。これは、引数をリストとして扱います。

#!/bin/bash

echo "All arguments: $@"
$ ./myscript.sh arg1 arg2 arg3
All arguments: arg1 arg2 arg3

引数の数

引数の数には '$#' を使用します。

#!/bin/bash

echo "Number of arguments: $#"
$ ./myscript.sh arg1 arg2 arg3
Number of arguments: 3

特殊変数 $0: スクリプト自体の名前

'$0' はスクリプト自体の名前を表します。

#!/bin/bash

echo "Script name: $0"
$ ./myscript.sh arg1 arg2
Script name: ./myscript.sh

引数の利用例

 シェルスクリプト内で引数を利用する例として、ファイルをコピーするスクリプトを考えてみましょう。

#!/bin/bash

# 引数の数が正しいかチェック
if [ "$#" -ne 2 ]; then
    echo "Usage: $0 source_file destination_directory"
    exit 1
fi

# 引数から変数に値を代入
source_file="$1"
destination_directory="$2"

# ファイルのコピー
cp "$source_file" "$destination_directory"

echo "File copied from $source_file to $destination_directory"

 このスクリプトは、2つの引数(コピー元のファイルとコピー先のディレクトリ)を受け取り、それらを用いてファイルをコピーします。もし引数が正しくない場合は使用法を表示してスクリプトを終了します。

$ ./copy_file.sh myfile.txt /path/to/destination
File copied from myfile.txt to /path/to/destination

引数の展開とクォーテーション

 引数内に空白が含まれる場合、引数が正しく展開されるようにクォーテーションを使うことが重要です。例えば、以下のスクリプトではクォーテーションを使用しています。

#!/bin/bash

echo "First argument: $1"
echo "Second argument: $2"
$ ./myscript.sh "arg with space" arg2
First argument: arg with space
Second argument: arg2

クォーテーションを使用しないと、引数内の空白が区切りとして解釈されます。

$ ./myscript.sh arg with space arg2
First argument: arg
Second argument: with

まとめ

 引数の利用はシェルスクリプトを柔軟かつ汎用的にするための重要な手法です。正確な引数の取得や利用法を理解することで、より効果的なスクリプトを作成できます。