배열의 첫 번째 문자열부터 특정 문자열까지 문자열을 삭제하는 방법

배열의 첫 번째 문자열부터 특정 문자열까지 문자열을 삭제하는 방법

${..#..} 일반 문자열 처럼 배열의 첫 번째 문자열부터 특정 문자열까지 어떻게 제거할 수 있나요?${s#abc}

$ s=(e u i o foo a)
$ t=(${s[@]#*foo})
$ echo "${t[@]}"

e u i o a

예상 대신 :

a

이러한 요구를 올바르게 해결하는 방법은 무엇입니까?

답변1

zsh전환할 수 있는 옵션이 있는 경우 다음을 수행할 수 있습니다.

s[(r)foo,-1]=()

어디에r취소아래 첨자 기호인덱스 대신 값으로 배열 멤버를 참조할 수 있습니다. 여기서는 첫 번째 값부터 마지막 ​​요소( )까지의 ()요소 범위 에 빈 목록이 할당됩니다.foo-1

관련 정보