"["와 함께 "-a" 또는 "-o" 연산자를 사용하지 마십시오.

"["와 함께 "-a" 또는 "-o" 연산자를 사용하지 마십시오.

스티븐 차제라스썼다:

일부 규칙.

  • 항상 참조 변수
  • -aor 연산자를 사용하지 마십시오 -o(여러 [명령과 &&and ||쉘 연산자 사용).

[POSIX 쉘을 사용하여 안정성을 향상시키십시오.

왜 " -aOR -o연산자를 사용하지 마십시오"?

["여러 명령 &&||쉘 연산자를 사용하여" 이 작업을 어떻게 수행할 수 있습니까 ?

답변1

왜 " -aOR -o연산자를 사용하지 마십시오"?

왜냐하면모호할 수 있으므로 POSIX와 호환되지 않습니다.:

-a 및 -o 기본 바이너리와 "(" 및 ")" 연산자를 지정하는 XSI 확장은 더 이상 사용되지 않는 것으로 표시되었습니다. (이를 사용하는 많은 표현식은 평가되는 특정 표현식에 따라 구문에 의해 모호하게 정의됩니다.) 이러한 표현식을 사용하는 스크립트는 아래 주어진 형식으로 변환되어야 합니다. 많은 구현이 이러한 쓸모없는 형식을 계속 지원하지만, 스크립트는 사용자 제공 입력을 처리할 때 매우 주의해야 합니다. 이 입력이 이러한 기본 및 연산자와 혼동될 수 있기 때문입니다. 애플리케이션 개발자가 스크립트에 대한 입력을 생성하는 모든 상황을 알지 않는 한 다음과 같이 호출합니다.

test "$1" -a "$2"

다음과 같이 작성되어야 합니다:

test "$1" && test "$2"

["여러 명령 &&||쉘 연산자를 사용하여" 이 작업을 어떻게 수행할 수 있습니까 ?

예를 들어 다음과 같은 연산자를 사용하여 여러 테스트를 수행하고 연결합니다.

[ 0 -eq 0 -a \( 0 -eq 1 -o 1 -eq 1 \) ]

다음과 같이 다시 작성할 수 있습니다.

[ 0 -eq 0 ] && ([ 0 -eq 1 ] || [ 1 -eq 1 ])

또는 더 나은:

[ 0 -eq 0 ] && { [ 0 -eq 1 ] || [ 1 -eq 1 ]; }

관련 정보