Zsh에서 문자열의 인덱스와 하위 문자열을 찾으시겠습니까?

Zsh에서 문자열의 인덱스와 하위 문자열을 찾으시겠습니까?

자주 방문하는 웹 페이지를 탐색하는 데 도움이 되는 함수를 zshrc 파일에 만들고 있습니다. 예를 들어 통화가 61b시작됩니다.https://sp21.datastructur.es/, 61b lab6열 예정이다https://sp21.datastructur.es/materials/lab/lab6/lab6, 그리고 61b proj2열릴 것입니다https://sp21.datastructur.es/materials/proj/proj2/proj2. URL에서 or 를 사용할 수 있도록 lab6or 의 하위 문자열을 생성해야 합니다 .proj2labproj

function 61b() {
  if [ -n "$1" ]; then
    open https://sp21.datastructur.es/materials/??/$1/$1
  else
    open https://sp21.datastructur.es/
  fi
}

내가 거기에 뭘 넣을까??. 나는 거의 모든 것을 시도했습니다.

답변1

더 복잡한 형식을 사용하여 많은 문자열 작업을 수행할 수 있습니다.매개변수 확장형태 또는 (또는 이들의 조합).${stuffPARAM}${PARAMstuff}

예를 들어, ${1%%[0-9]##}첫 번째 매개변수( $1)는 숫자(와일드카드 패턴 [0-9]##)는 ( ) 끝에서 제거됩니다 ${…%%…}. setopt extended_glob와일드카드 패턴이 작동하려면 이를 또는 함수 [0-9]##에 넣어야 합니다 ..zshrc

function 61b() {
  setopt local_options extended_glob unset
  if [ -n "$1" ]; then
    open https://sp21.datastructur.es/materials/${1%%[0-9]##}/$1/$1
  else
    open https://sp21.datastructur.es/
  fi
}

[0-9]##<->대신 모든 범위의 숫자를 나타내는 를 사용할 수 있습니다 . ("숫자"는 10진수 표기법으로 표현된 음이 아닌 정수를 나타내므로 일련의 숫자와 동일합니다.)

관련 정보