値が変化したかどうかを判定する関数

関数名 Chk_Stat
書式 Chk_Stat 識別ID 値
目的 与えられた値に変化があるかどうかを調べる
戻り値 変化なし:0 変化あり:1 エラー9:
スクリプトの実行結果をファイルに保存しておき
前回と今回の値を比較して一致しているか調べる

Chk_Stat () {
    . Error_Msg.sh && . Arg_Nums.sh && . Chk_File.sh ||\
    { echo "Chk_Stat: error: Function not found." 1>&2; exit 9; }
    Arg_Nums -eq 2 "$@" ||\
    { Error_Msg ChkStat "Number of Arguments was wrong."; exit 9; }
    
    local _RECORD_DIR=/tmp
    local _RECORD_FILE="$_RECORD_DIR/$(BASENAME "$0")-$1.status"
    
    #値を保存するファイル・ディレクトリの作成と確認
    [ -e "$_RECORD_DIR" ] || mkdir "$_RECORD_DIR"
    [ -e "$_RECORD_FILE" ] || touch "$_RECORD_FILE"
    Chk_File -rw "$_RECORD_FILE" ||\
    { Error_Msg ChkStat "$_RECORD_FILE: Permission denied."; exit 9; }
    
    local _OLD_RESULT=$(cat "$_RECORD_FILE")
    
    #今回の値と前回以前の値の比較
    if [ "$2" = "$_OLD_RESULT" ]; then
        return 0
    elif [ "$2" = "" ]; then
        { Error_Msg Chk_Stat "Given value was blank."; exit 9; }
    else
        echo "$_OLD_RESULT"
        echo "$2" > "$_RECORD_FILE"
        return 1
    fi
}