$foo
임의의 문자열을 포함할 수 있는 쉘 변수에 대한 일치 여부를 테스트하기 위해 다음 구문을 발견했습니다 foo
.
[ "x$foo" = "xfoo" ]
x
접두사 with의 목적은 설명되지 않습니다. 이는 $foo
특수 테스트 문자열(예 =
: -f
, 또는 )이 포함될 때 (
발생할 수 있는 오류를 방지하려는 시도처럼 보입니다 !
. GNU 정보 매뉴얼에는 복합 표현식이 포함되어 모호성을 유발할 수 있다고 명시되어 있으므로 -a
저는 -o
주로 단순한(즉, 비복합) 진술에 관심이 있습니다. 이에 대한 추가 정보를 찾는 데 문제가 있습니다. test
나는 그다지 똑똑하지 않다는 점을 솔직히 인정하지만 GNU가 예상치 못한 방식으로 실패하게 만드는 임의의 문자열의 예를 고안할 수 없습니다 .
내 질문:
- 에 매개변수 대체 접두어를 추가하는 이유는 무엇입니까
test
? test
예상치 못한 결과를 초래 하는 단순 매개변수 대체(즉, 접두사 보호 없음)를 포함하는 단순(즉, 비복합) 명령문의 예가 있습니까 ?
test
나는 주로 Linux에서 GNU 도구를 사용하지만 이식성 때문에 다른 플랫폼에서도 GNU 도구를 사용 하고 싶습니다 .
답변1
> [ -f = -a -a -a ]
bash: [: argument expected
> [ -f = -a -a x ]
하지만:
[ x-f = x-a -a -a ]
그래도 작동하지 않습니다
[ -a ]
매우 좋은.