シェルスクリプト if文でのエラー

2018-12-17

シェルスクリプトでif文を使った際に構文は問題ないのに実行すると
unary operator expected」と表示される場合があります

下記のスクリプトは、/var/tmp/testのファイル数を変数に代入し、if文の処理をしています。実行するとエラーになります。実際には/var/tmp/testのディレクトリはありません。「ls_chk」変数がnullとなり(if [ -ge 10 ])となりエラー( unary operator expected)となります。
「unary operator expected」のエラーになる場合は、if文で評価する変数に値が入っていないケースを考慮して “変数" のように""で変数を囲めばエラーの対処になるかと思います

$ sh test.sh
ls: cannot access /var/aaaa: No such file or directory
test.sh: line 5: [: -ge: unary operator expected

$ cat test.sh
#!/bin/bash

ls_chk=`ls /var/tmp/test | wc -l` # /

if [ "$ls_chk" -ge 10 ];
then
  echo "$ls_chk"
fi

スポンサーリンク