シェルスクリプト if文でのエラー
シェルスクリプトで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
ディスカッション
コメント一覧
まだ、コメントがありません