문자열 비교 전 추가 문자 [중복]
Nov 03 2020
일부 bash 코드에서는 문자열 비교 전에 추가 문자가 추가 된 것을 볼 수 있습니다. 누군가 이유를 설명 할 수 있습니까?
if [ "x$VAR" = "xString" ]; then
...
fi
답변
3 AndyDalton Nov 03 2020 at 22:56
변수가 설정 해제 될 가능성을 방지하기 위해이를 확인할 수 있습니다. 예를 들면 다음과 같습니다.
if [ $x = "hi" ]; then echo $x; fi
가로 x설정된 경우 hi동작은 다음과 같습니다.
$ if [ $x = "hi" ]; then echo $x; fi hi $
그러나이 x설정되지 않은 경우 왼쪽에 아무것도 없기 때문에 오류가 발생합니다 =.
$ if [ $x = "hi" ]; then echo $x; fi
zsh: parse error: condition expected: =
따옴표를 추가하면 문제가 해결됩니다.
$ if [ "$x" = "hi" ]; then echo $x; fi
$
또한 공백이 아닌 값을 추가하면 문제가 해결됩니다.
$ if [ x$x = "xhi" ]; then echo $x; fi
$ x=hi $ if [ x$x = "xhi" ]; then echo $x; fi
hi
$
1 Pourko Nov 03 2020 at 22:56
아마 따옴표없이 [ x$VAR = xstring ]
어떤 이유로 VAR이 정의되지 않은 경우 확장되지 않고 스크립트 인터프리터가 -bash: [: =: unary operator expected. (내 말은, 통역사는 [ = string ]그것을 보고 반대 할 것입니다.) 양쪽에 추가 문자를 추가함으로써, 당신은 "아무것도"가 "무언가"가 될 것이라는 것을 보장하지만, =여전히 유지 될 것입니다. 따옴표를 사용하면 그런 오류가 발생하지 않지만 많은 사람들이 습관적으로 추가 문자를 추가하고 따옴표에 많은 관심을 기울이지 않습니다.
waltinator Nov 03 2020 at 22:56
비어 있더라도 문자열이 비어 있지 않도록하기 위해 수행됩니다 $VARIABLE. bash구조
if [ $var = Y ]
경우 무례한 행동 $var입니다 "".