다음 테스트 명령이 있습니다.
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