명령: [ -z "" ] && 에코 0 ||

명령: [ -z "" ] && 에코 0 ||

실행하면 [ -z "" ] && echo 0 || echo 1출력이 제공됩니다 0. 이 명령은 무엇입니까? 어떻게 설명되나요?

답변1

Bash(및 유사한 쉘)에서 는 when is 평가하지 않거나 평가할 수 없는 간단한 명령문에 대한 [ x ] && y || z관용적 약칭입니다 . 간단한 테스트를 위해 귀중한 화면/편집기 수직 공간 5줄을 낭비하고 싶지 않을 때 유용합니다.if [ x ] ; then y ; else z ; fiyfalse

"관용적"이라는 말은 이것이 일반적인 쉘 프로그래밍 방식이라는 것입니다. 셸에서 논리 AND( &&) 및 OR( )가 작동하는 방식을 활용하는 방법입니다 . ||true이면 y실행합니다 . 거짓이면 실행하세요. 문제는 다음과 같습니다.xzxz반품xtrue이면 실행되고 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"으로 표시됩니다.

관련 정보