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

관련 정보