概要

シェルスクリプトで未定義の変数を参照したときにスクリプトを停止できないか調べたのでメモ

rm -rf "${DIR}/"

などとやるときに $DIR が定義されておらず rm -rf / が走ってしまいあびゃーとなるのを防ぎたい

やり方

通常のままだと未定義の変数を参照しても処理されてしまう

#!/bin/bash

echo "${DIR}/"
echo 'finish'
$ sh sample.sh
/
finish!

set -u を使うことで未定義の変数を参照したときに処理を停止することができる

#!/bin/bash
set -u

echo "${DIR}/"
echo 'finish'
$ sh hoge.sh
sample.sh: line 4: DIR: unbound variable