매개변수 대체는 ${num//[0-9]/}입니다.

매개변수 대체는 ${num//[0-9]/}입니다.

이 매개변수 대체를 보았지만 정확히 무엇을 하는지 혼란스럽습니다.

${num//[0-9]/}

답변1

문자열에 나타나는 위치에 관계없이 문자열에서 모든 숫자(0-9)를 제거(*)합니다. 예를 들어

$ num=abc5x7y999z
$ echo ${num//[0-9]/}
abcxyz

/(*) 사실상 빈 문자열 또는 해당 매개변수 확장의 마지막 문자열 이후의 문자열 로 대체됩니다 . 에서 man bash:

${parameter/pattern/string}

패턴 교체. 패턴은 패턴을 생성하기 위해 확장되고, 경로 이름 확장에서처럼 매개변수가 확장되고 패턴과 해당 값과 가장 오랫동안 일치하는 항목이 문자열로 대체됩니다. 일치는 아래 패턴 일치에 설명된 규칙을 사용하여 수행됩니다.

패턴이 로 시작하면 /해당 패턴의 모든 항목이 문자열로 대체됩니다. 일반적으로 첫 번째 발생만 대체됩니다.

패턴이 로 시작하는 경우 #매개변수 확장 값의 시작 부분에서 일치해야 합니다. 패턴이 로 시작하는 경우 %인수의 확장된 값 끝과 일치해야 합니다.

문자열이 비어 있으면 일치하는 패턴이 제거되고 /후속 패턴은 생략될 수 있습니다.

nocasematch 쉘 옵션이 활성화되면 알파벳 문자의 대소문자에 관계없이 일치가 수행됩니다. 인수가 @or 이면 *각 위치 인수에 대체 연산이 차례로 적용되고 확장이 결과 목록이 됩니다.

@매개변수가 또는 로 인덱스된 배열 변수인 경우 *배열의 각 구성원에 대해 대체 작업이 차례로 수행되고 확장은 결과 목록입니다.

(굵게 표시하고 추가 줄 바꿈을 추가했습니다)

관련 정보