![테스트 명령이 실패로 시작하는 이유는 무엇입니까(1로 종료)?](https://linux55.com/image/153334/%ED%85%8C%EC%8A%A4%ED%8A%B8%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%8B%A4%ED%8C%A8%EB%A1%9C%20%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C(1%EB%A1%9C%20%EC%A2%85%EB%A3%8C)%3F.png)
다음 테스트 명령이 있습니다.
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