【メッセージ具体例紹介】単項演算子が予期されます【シェルスクリプト】
備忘録になります。以下のようなケースでエラーメッセージが発生します。
ケース1
# cat wrk.sh
VAR="A"
if [ -eq $VAR ] ; then
echo "AAA"
fi
# ./wrk.sh
./wrk.sh: 2 行: [: -eq: 単項演算子が予期されます
単項演算子が入るところに比較演算子を入れてしまったケースです。
修正後
# cat wrk.sh
VAR="A"
if [ -n $VAR ] ; then
echo "AAA"
fi
# ./wrk.sh
AAA
ケース2
# cat wrk.sh
VAR = "A"
if [ $VAR = "A" ] ; then
echo "AAA"
fi
# ./wrk.sh
./wrk.sh: 行 1: VAR: コマンドが見つかりません
./wrk.sh: 2 行: [: =: 単項演算子が予期されます
変数の代入に失敗する事により、$VARに値が存在せず、[ = “A”]という形が成立してしまったケースです。
正しく$VARに値が入ればエラーになりません。
# cat wrk.sh
VAR="A"
if [ $VAR = "A" ] ; then
echo "AAA"
fi
# ./wrk.sh
AAA
前段のプログラムの流れでCOUNT変数に値が入らない可能性がある場合、COUNT変数をダブルクォーテーション(“)で囲ってあげる必要があります。
# cat wrk.sh
VAR=
if [ "$VAR" = "A" ] ; then
echo "AAA"
else
echo "BBB"
fi
# ./wrk.sh
BBB
関連リンク