SH 셸을 사용하고 있으며 문자열을 변수 값과 비교하려고하지만 if
조건은 항상 true로 실행됩니다. 왜?
다음은 몇 가지 코드입니다.
Sourcesystem="ABC"
if [ "$Sourcesystem" -eq 'XYZ' ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
echo Sourcesystem Value is $Sourcesystem ;
이것은 작동하지 않습니다.
Sourcesystem="ABC"
if [ 'XYZ' -eq "$Sourcesystem" ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
echo Sourcesystem Value is $Sourcesystem ;
둘째, 이것을 NULL 또는 빈 문자열과 일치시킬 수 있습니까?
답변
=
문자열 비교 에는 연산자를 사용해야합니다 .
Sourcesystem="ABC"
if [ "$Sourcesystem" = "XYZ" ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
man test
-z
빈 문자열과 일치 하는 데 사용한다고 말합니다 .
답변
-eq
정수를 비교하는 데 사용됩니다. =
대신 사용하십시오 .
답변
eq는 정수를 비교하는 데 사용되며 대신 ‘=’를 사용합니다. 예 :
if [ 'AAA' = 'ABC' ];
then
echo "the same"
else
echo "not the same"
fi
행운을 빕니다
답변
나는 똑같은 문제가 있었다.
if [ 'xyz' = 'abc' ];
then
echo "match"
fi
공백을 확인하십시오. 이 경우 공백을 사용하는 것이 중요합니다.=
부호 .
” 기타 비교 연산자 “를 확인하십시오 .
답변
-eq
정수를 비교하기위한 쉘 비교 연산자입니다. 문자열을 비교하려면 =
.
답변
-eq
수학적 비교 연산자입니다. 나는에 의존, 문자열 비교를 위해 그것을 사용한 적이 ==
과 !=
비교하십시오.
if [ 'XYZ' == 'ABC' ]; then # Double equal to will work in Linux but not on HPUX boxes it should be if [ 'XYZ' = 'ABC' ] which will work on both
echo "Match"
else
echo "No Match"
fi
답변
내가 테스트 한 4 개의 셸 중 및 ABC -eq XYZ
에 대한 test
기본 제공 에서 true로 평가됩니다 . 표현은 거짓 아래로 평가 과의 내장 명령 과 . 으로 하고 , 문자열을 수치로 변환 및 IMO가 모두 0이기 때문에이다위한 내장 매크로의 동작과 동일 하고 정확하지만 대한 사양은 이것에 모호한. zsh
ksh
/usr/bin/test
dash
bash
ksh
zsh
ksh
zsh
test