条件文、「単項演算子が必要です」

条件文、「単項演算子が必要です」

教科書「Unixとシステム管理ハンドブック」に記載されているサンプルスクリプトについて質問があります。スクリプトは次のとおりです...というエラーが発生しますlogscript: line 8: [: 1: unary operator expected

# The log level is set in the global variable LOG_LEVEL. The choices
# are, from most to least severe.  Error, Warning, Info, and Debug.

function logMsg {
    message_level=$1
    message_itself=$2

    if [ $message_level -le $LOG_LEVEL ]; then
            case $message_level in
                    0) message_level_text="Error";;
                    1) message_level_text="Warning";;
                    2) message_level_text="Info";;
                    3)message_level_text="Debug";;
                    *) message_level_text="Other"
    esac
    echo "${message_level_text}: $message_itself"
    fi
}


# Main program starts here
logMsg $1 $2

このエラーが発生する理由のアイデアはありますか?

ベストアンサー1

エラーはLOG_LEVEL定義されていないために発生します。この機能を実行する方法(または使用しているシェルまたはオペレーティングシステム)に関する情報を提供していませんが、LOG_LEVELこのエラーが設定されるとエラーは消えます。

たとえば、

$ foo=""; [ 1 -le $foo ] && echo yes
bash: [: 1: unary operator expected

同時に以下を$foo設定した場合:

$ foo="1"; [ 1 -le $foo ] && echo yes
yes

おすすめ記事