Shellでset -uした時の引数の取り扱い

·1 分で読めます

#!/bin/sh

DIR=$1

rm -rf $DIR/

なんてやると$1がなかった時に / が消されてしまうので非常に危険。こういう場合は set -u して、未定義の変数があればエラーにすることが推奨される。

/Users/kazuhiro/Dropbox/code/sh/set_u.sh: line 3: $1: unbound variable

ただし、 set -u すると引数の個数を$#を使って、いちいちチェックしないといけない。

#!/bin/sh

set -u

# 引数のサイズをチェック

if [ $# -le 1 ]; then

exit 1

fi

DIR=$1

rm -rf $DIR/

ちょっと面倒だけど set -u している時は $# 使いましょうということで。