실행하면 [ -z "" ] && echo 0 || echo 1
출력이 제공됩니다 0
. 이 명령은 무엇입니까? 어떻게 설명되나요?
답변1
Bash(및 유사한 쉘)에서 는 when is 평가하지 않거나 평가할 수 없는 간단한 명령문에 대한 [ x ] && y || z
관용적 약칭입니다 . 간단한 테스트를 위해 귀중한 화면/편집기 수직 공간 5줄을 낭비하고 싶지 않을 때 유용합니다.if [ x ] ; then y ; else z ; fi
y
false
"관용적"이라는 말은 이것이 일반적인 쉘 프로그래밍 방식이라는 것입니다. 셸에서 논리 AND( &&
) 및 OR( )가 작동하는 방식을 활용하는 방법입니다 . ||
true이면 y
실행합니다 . 거짓이면 실행하세요. 문제는 다음과 같습니다.x
z
x
z
반품x
true이면 실행되고 y
실행되지만 false로 평가됩니다(즉, 0이 아닌 종료 코드를 반환함).아니요이런 일이 발생할 가능성이 있는 경우 사용하세요. 예를 들어 [ -z "" ] && false || echo 1
, -z ""
조건이 true라도 "1"이 출력됩니다.
즉, 다음과 (거의) 동일합니다.
if [ -z "" ] ; then
echo 0
else
echo 1
fi
이 완전한 형태의 if; then ... ; else ... ; fi
구조는 축약된 형태와 동일한 단점을 겪지 않습니다. 이 구성은 정확하고 항상 작동하는 반면, 속기는 일부 제한된 상황에서 유용한 빠르고 더러운 트릭입니다.
-z
문자열이 비어 있는지 테스트합니다.
이 명령의 영어는 다음과 같습니다.
빈 문자열이 비어 있으면 "0"을 표시하고, 그렇지 않으면 "1"을 표시합니다.
항상 "0"으로 표시됩니다.