Bash > 4.0에서는 변수 확장이 소문자 변수에 사용되는 것을 확인했습니다. 예를 들어
echo ${variable,,}
독서매뉴얼 페이지쉘이 문자열을 소문자로 변환하는 이유를 정말로 이해하지 못합니다.
시퀀스 표현식은 {x..y[..incr]} 형식을 취합니다. 여기서 x와 y는 정수 또는 단일 문자이고 incr(선택적 증분)은 정수입니다. 정수가 제공되면 표현식은 x와 y 사이의 모든 숫자(포함)로 확장됩니다. 제공된 정수 앞에 "0"을 붙여 각 항목의 너비를 동일하게 만들 수 있습니다. x 또는 y가 0으로 시작하면 쉘은 생성된 모든 용어가 동일한 자릿수를 포함하도록 강제하고 필요한 경우 0을 채웁니다. 문자가 제공되면 표현식은 기본 C 로케일을 사용하여 x와 y(포함) 사이의 모든 문자로 사전순으로 확장됩니다. x와 y는 동일한 유형이어야 합니다. 델타를 제공하는 경우 각 항목 간의 차이로 사용됩니다. 기본 증분은 적절하게 1 또는 -1입니다.
변수가 소문자로 변환되는 이유는 무엇입니까?
답변1
당신은 문서의 잘못된 부분을 읽고 있습니다.쉘 매개변수 확장대신에.
${parameter^pattern}
${parameter^^pattern}
${parameter,pattern}
${parameter,,pattern}
이 확장은 중간 알파벳 문자의 대소문자를 수정합니다
parameter
.pattern
파일 이름 확장과 마찬가지로 패턴을 생성하기 위해 확장됩니다 . 확장된 값의 각 문자는parameter
에 대해 테스트되고pattern
, 패턴과 일치하면 대소문자가 변환됩니다. 패턴은 두 개 이상의 문자와 일치하려고 시도해서는 안 됩니다. '^' 연산자는 일치하는 소문자를 대문자로 변환하고, ',' 연산자는 일치하는 대문자를 소문자로 변환합니다. '^^' 및 ',,' 확장은 확장된 값에서 일치하는 모든 문자를 변환합니다. '^' 및 ',' 확장은 일치하고 확장된 값의 첫 번째 문자만 변환합니다. 생략 하면pattern
"?"로 처리되어 모든 문자와 일치합니다. '@' 또는 '*' 인 경우parameter
각 위치 매개변수에 대소문자 수정 작업이 차례로 적용되어 결과 목록으로 확장됩니다. 아래 첨자 "@" 또는 "*"가 포함된 배열 변수인 경우parameter
대소문자 수정 작업이 배열의 각 구성원에 차례로 적용되어 결과 목록으로 확장됩니다.
답변2
"중괄호 확장"으로 시작하지 않는 "중괄호 확장" 섹션을 인용하고 있습니다 $
.
다음 명령을 실행해야 합니다.
LESS=+/'\{parameter\^pattern\}' man bash
$
( ) 로 시작하는 "대소문자 수정" 섹션을 찾으세요 ${ ^^ }
.