パラメータ置換

シェルではパラメータ置換を使って、パラメータを取得する時に必要な形に置き換えることができます。

例えば、シェルスクリプトでパラメータが指定されていない場合のデフォルト値をセットしたいかもしれません。そんな時にパラメータ置換を使えば簡単に実現できます。

パラメータのデフォルト値の割当

適当なBashスクリプトを用意しました。このファイルは tmp.sh で保存します。

#!/bin/bash
echo ${1:-"default value"}

パラメータ置換を使わない場合、 $1 で第一パラメータにアクセスできますが、上記のようにすることでパラメータが与えられない場合のデフォルト値を指定できます。この方法を取れば複雑な処理を書かずにかつ、シンプルな記法なので可読性も担保できます。

実際に呼び出してみると次のような出力になります。

❯ tmp.sh "Hello Bash"
Hello Bash
❯ tmp.sh
default value

引数を与えなかった2つ目の呼び出しでデフォルト値が出力されたのがわかると思います。

パラメータが与えられない場合にエラーで処理を中断する

パラメータ置換はデフォルト値を指定する以外の書き方も存在します。使用イメージがわきやすいものとして、パラメータが指定されない場合にエラーで処理を中断する記法を紹介します。

#!/bin/bash
echo ${1?requried parameter}
echo World

この例ではパラメータが与えられていない場合にメッセージを表示します。

❯ tmp.sh Hello
Hello
World
❯ tmp.sh
/home/bookstore/bin/tmp.sh: 行 2: 1: requried parameter