shで文字列を比較する[閉じる]

shで文字列を比較する[閉じる]

私が試したことは次のとおりです。

#! /bin/sh
    if [ -z "${ENCRYPT_ALL_PWD}" ]; then
        if [ ! -z $SA_USER ]; then
            DBAUSER=$SA_USER
            $ECHO "Yahoo!!!!!!!!!!!!"
         else
            $ECHO "Please define variable SA_USER in $HOME/<blah>profile and run this script again..."
            exit 1
         fi
    fi

ただし、ENCRYPT_ALL_PWDが定義されていない場合、出力から「見つかりません」を削除することはできません。

$ sh -x swar_test.sh
+ [  != YES ]
+ [ ! -z ]
+ Please define variable SA_USER in <blah>/<blah>profile and run this script again...
swar_test.sh[7]: Please define variable SA_USER in <blah>/<blah>profile and run this script again...:  **not found**
+ exit 1

私もこれを試しましたが、うまくいかず、ENCRYPT_ALL_PWDが定義されていないか空のときに「見つかりません」とマークしました。

#! /bin/sh
if [ "${ENCRYPT_ALL_PWD}" != "YES" ]; then
    if [ ! -z $SA_USER ]; then
        DBAUSER=$SA_USER
        $ECHO "Yahoo!!!!!!!!!!!!"
     else
        $ECHO "Please define variable SA_USER in $HOME/<blah>profile and run this script again..."
        exit 1
     fi
fi
exit 0

私がここで何を間違っているのか? 「見つかりません」を削除する方法は?

私の期待は、ENCRYPT_ALL_PWDが定義されていないか空で、SA_USERも定義されていない場合、出力は次のようになるはずです。

Please define variable SA_USER in $HOME/<blah>profile and run this script again...

答え1

これは正しく設定されました。

$ cat swar_test.sh
    #! /bin/sh

    . $HOME/tools/init.sh
    . $HOME/<blah>profile
    if [ "${ENCRYPT_ALL_PWD}" != "YES" ]; then
        if [ ! -z $SA_USER ]; then
            DBAUSER=$SA_USER
            $ECHO "Yahoo!!!!!!!!!!!!"
         else
            $ECHO "Please define variable SA_USER in $HOME/aaaprofile and run this script again..."
            exit 1
         fi
    fi
    exit 0

関連情報