모호성을 테스트하기 위해 임의의 문자열을 전달해야 하는 경우

모호성을 테스트하기 위해 임의의 문자열을 전달해야 하는 경우

$foo임의의 문자열을 포함할 수 있는 쉘 변수에 대한 일치 여부를 테스트하기 위해 다음 구문을 발견했습니다 foo.

[ "x$foo" = "xfoo" ]

x접두사 with의 목적은 설명되지 않습니다. 이는 $foo특수 테스트 문자열(예 =: -f, 또는 )이 포함될 때 (발생할 수 있는 오류를 방지하려는 시도처럼 보입니다 !. GNU 정보 매뉴얼에는 복합 표현식이 포함되어 모호성을 유발할 수 있다고 명시되어 있으므로 -a저는 -o주로 단순한(즉, 비복합) 진술에 관심이 있습니다. 이에 대한 추가 정보를 찾는 데 문제가 있습니다. test나는 그다지 똑똑하지 않다는 점을 솔직히 인정하지만 GNU가 예상치 못한 방식으로 실패하게 만드는 임의의 문자열의 예를 고안할 수 없습니다 .

내 질문:

  1. 에 매개변수 대체 접두어를 추가하는 이유는 무엇입니까 test?
  2. test예상치 못한 결과를 초래 하는 단순 매개변수 대체(즉, 접두사 보호 없음)를 포함하는 단순(즉, 비복합) 명령문의 예가 ​​있습니까 ?

test나는 주로 Linux에서 GNU 도구를 사용하지만 이식성 때문에 다른 플랫폼에서도 GNU 도구를 사용 하고 싶습니다 .

답변1

> [ -f = -a -a -a ]
bash: [: argument expected

> [ -f = -a -a x ]

하지만:

[ x-f = x-a -a -a ]

그래도 작동하지 않습니다

[ -a ]

매우 좋은.

관련 정보