ksaitoの日記

日々試したことの覚え書き

シェルの未定義変数

移転しました。

自動的にリダイレクトします。

bashで未定義な変数があった場合、下記のように処理していました。

$ cat test1.sh
#! /bin/bash

VAR1=$1

if [ -z "$VAR1" ]
then
    echo needs arg1
    exit 1
fi

echo ok $VAR1

下記のように動作します。

$ ./test1.sh
needs arg1
$ echo $?
1
$ ./test1.sh aaa
ok aaa
$ echo $?
0
$ 

set -uを使うとシンプルになります。

$ cat test2.sh
#! /bin/bash

set -u

VAR1=$1
echo ok $VAR1
$ ./test2.sh 
./test2.sh: 行 5: $1: 未割り当ての変数です
$ echo $?
1
$ ./test2.sh aaa
ok aaa
$ echo $?
0
$