シェルスクリプトを作成する際、引数を与えて実行することができます。
ここでは、引数の基本的な取り扱いから、引数の数をカウントする方法、引数をオプションとして扱う方法までを解説します。
シェルスクリプトに引数を渡すと、それらの引数は特殊な変数でアクセスできます。引数は$1, $2, $3 などでアクセスでき、 $0はスクリプト自身の名前を示します。
#!/bin/bash
echo "スクリプト名: $0"
echo "1番目の引数: $1"
echo "2番目の引数: $2"
上記のスクリプトをtest.sh という名前で保存し、以下のように実行します。
bash test.sh one two
すると、下記のような実行結果が得られます。
引数の数を知りたい場合は、$#を使用します。この変数はスクリプトに渡された引数の数を示します。
#!/bin/bash
echo "引数の数: $#"
引数が指定されなかった場合にデフォルト値を設定することも可能です。これにより、引数が提供されなかった場合でもスクリプトが正しく動作します。
#!/bin/bash
# 引数が指定されていない場合のデフォルト値
input=${1:-def_value}
echo "入力値: $input"
上記スクリプトは、コマンドラインから引数が渡された場合、その値を($1) をinput変数に格納し、引数が渡されなかった場合は def_valueというデフォルト値をinput変数に格納します。
input=${1:-def_value}:
オプション引数を処理するためには、getoptsコマンドを使用するのが一般的です。getoptsは、コマンドラインオプションを解析するための便利なツールです。
while getopts "a:b:" opt; do
case $opt in
a)
echo "オプション -a が指定されました: $OPTARG"
;;
b)
echo "オプション -b が指定されました: $OPTARG"
;;
\?)
echo "無効なオプションです。"
exit 1
;;
esac
done
以下のような実行結果が得られます。
以下にスクリプトについて解説します。
while getopts “a:b:” opt; do:
:
は、そのオプションに引数が必要であることを意味します。case $opt in: $optの値によって異なる処理を行います。
done: whileループの終了を示します。
シェルスクリプトで引数を扱う方法をマスターすることで、スクリプトの汎用性と柔軟性が大幅に向上します。
この記事で紹介した基本的な技術を活用して、より効率的なスクリプト作成に役立ててください。