테스트 명령이 실패로 시작하는 이유는 무엇입니까(1로 종료)?

테스트 명령이 실패로 시작하는 이유는 무엇입니까(1로 종료)?

다음 테스트 명령이 있습니다.

test "ssh://[email protected]/teros/moodwire_demo" == ssh*; echo $?

나갈때 왜 1인가요? 첫 번째 문자열이 두 번째 문자열로 시작하는지 확인하고 싶습니다.

답변1

test의 명령은 bash이 작업을 수행할 수 없습니다. 문자열의 경우 등식, 부등식 및 사전순에 대한 테스트만 지원합니다(참고 help test자료 참조 bash).

하지만 당신은 사용할 수 있습니다

[[ "ssh://[email protected]/teros/moodwire_demo" == ssh* ]]
echo "$?"

[[ ... ]]이러한 형태의 문자열 일치는 에서만 수행됩니다 bash.

사용하지 마세요 [[ ... ]]:

expr "ssh://[email protected]/teros/moodwire_demo" : '^ssh' >/dev/null
echo "$?"

이는 expr유틸리티를 사용하여 일치시킵니다(기본). 정규식 ^ssh반대 문자열입니다. expr내장된 유틸리티가 아니기 때문에 ==내부에서 사용하는 것보다 속도가 약간 느립니다.[[ ... ]]bash

관련 정보