이 매개변수 대체를 보았지만 정확히 무엇을 하는지 혼란스럽습니다.
${num//[0-9]/}
답변1
문자열에 나타나는 위치에 관계없이 문자열에서 모든 숫자(0-9)를 제거(*)합니다. 예를 들어
$ num=abc5x7y999z
$ echo ${num//[0-9]/}
abcxyz
/
(*) 사실상 빈 문자열 또는 해당 매개변수 확장의 마지막 문자열 이후의 문자열 로 대체됩니다 . 에서 man bash
:
${parameter/pattern/string}
패턴 교체. 패턴은 패턴을 생성하기 위해 확장되고, 경로 이름 확장에서처럼 매개변수가 확장되고 패턴과 해당 값과 가장 오랫동안 일치하는 항목이 문자열로 대체됩니다. 일치는 아래 패턴 일치에 설명된 규칙을 사용하여 수행됩니다.
패턴이 로 시작하면
/
해당 패턴의 모든 항목이 문자열로 대체됩니다. 일반적으로 첫 번째 발생만 대체됩니다.패턴이 로 시작하는 경우
#
매개변수 확장 값의 시작 부분에서 일치해야 합니다. 패턴이 로 시작하는 경우%
인수의 확장된 값 끝과 일치해야 합니다.문자열이 비어 있으면 일치하는 패턴이 제거되고
/
후속 패턴은 생략될 수 있습니다.nocasematch 쉘 옵션이 활성화되면 알파벳 문자의 대소문자에 관계없이 일치가 수행됩니다. 인수가
@
or 이면*
각 위치 인수에 대체 연산이 차례로 적용되고 확장이 결과 목록이 됩니다.
@
매개변수가 또는 로 인덱스된 배열 변수인 경우*
배열의 각 구성원에 대해 대체 작업이 차례로 수행되고 확장은 결과 목록입니다.
(굵게 표시하고 추가 줄 바꿈을 추가했습니다)