첫 번째 문자열이 두 번째 문자열로 시작하는지 확인

JavaScript에는 이에 대한 기능이 있습니다.

"world".startsWith("w") true 

셸로 어떻게 테스트 할 수 있나요? 이 코드는 다음과 같습니다.

if [ world = w ] then echo true else echo false fi 

그러나 동등성을 테스트하기 때문에 실패합니다. 내장 기능을 사용하고 싶지만이 페이지의 모든 유틸리티를 사용할 수 있습니다.

http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html

Answer

셸이 bash 인 경우 : 이중 대괄호 내에서 == 연산자의 오른쪽은 다음과 같습니다. 완전히 인용되지 않은 패턴 :

if [[ world == w* ]]; then echo true else echo false fi 

또는 더 간결하게 : [[ world == w* ]] && echo true || echo false [*]

bash를 구체적으로 타겟팅하지 않는 경우 : 패턴 일치를 위해 case 문을 사용합니다.

case "world" in w*) echo true ;; *) echo false ;; esac 

[*]하지만 iv id =에주의해야합니다. 둘 중 하나 C가 실행되기 때문에 “3d2c8c8c97″>

양식 > A 실패 또는 B 실패. if A; then B; else C; fi 양식은 A가 실패한 경우 C를 실행합니다.

답변

set world 

다음 :

if [ "${1%%w*}" ] then echo false else echo true fi 
  1. 소스 문자열

  2. 남은 것이 있으면 소스 문자열이 두 번째 문자열로 시작하지 않습니다.

또는 :

if [ "$1" = "${1#w}" ] then echo false else echo true fi 
  1. 소스 문자열에서 w 제거
  2. 소스 문자열과 비교
  3. 같으면 소스 문자열이 두 번째 문자열로 시작하지 않습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다