Bash 기법: 여러 문자열 변 수 를 처리 하 는 매개 변수 확장 식 을 실례 로 소개 합 니 다.

5180 단어 linuxbashshell
Linux 의 bash 셸 은 다양한 형식의 매개 변수 확장 식 을 제공 합 니 다. 변수 자체 의 값 을 가 져 오 거나 변수 값 을 특정 처리 하여 새로운 값 을 얻 을 수 있 습 니 다.이 글 은 문자열 변수 값 과 관련 된 매개 변수 확장 식 에 대해 종합 적 으로 설명 합 니 다.
bash 에서 filepath=example/subdir/testfile.txt 이라는 변 수 를 정의 했다 고 가정 하면 아래 의 매개 변수 확장 을 사용 하여 값 을 얻 을 수 있 습 니 다.
  • ${filepath} filepath 변수의 값 을 가 져 옵 니 다.예 를 들 어 echo ${filepath} 명령 인쇄 결 과 는 example/subdir/testfile. txt 입 니 다.
  • ${#filepath} filepath 변수 값 의 문자 갯 수, 즉 문자열 길이 입 니 다.예 를 들 어 echo ${\# filepath} 명령 이 인쇄 된 결 과 는 27 입 니 다.
  • ${filepath:4:3} filepath 변수 값 으로 시작 하 는 네 번 째 문자 부터 세 글 자 를 가 져 와 키 문자열 을 얻 습 니 다.예 를 들 어 echo ${filepath:4:3} 명령 인쇄 결 과 는 ple 입 니 다.주 의 는 시작 하 는 0 번 째 문자 부터 세 는 것 입 니 다.이 표현 식 의 형식 은 ${parameter: offset: length} 입 니 다. offset 는 어느 위치 에서 문 자 를 가 져 올 지 지정 합 니 다. length 는 몇 개의 문 자 를 가 져 올 지 지정 합 니 다.
  • ${filepath: -3:3} filepath 변수 값 의 마지막 세 번 째 문자 부터 세 글 자 를 가 져 와 하위 문자열 을 얻 습 니 다.예 를 들 어 echo ${filepath: - 3: 3} 명령 인쇄 결 과 는 txt 입 니 다.음수 의 offset 은 역수 의 편 이 값 을 나타 낸다.콜론 과 마이너스 사이 에 빈 칸 을 넣 어야 한다.주 의 는 끝의 첫 번 째 문자 부터 앞으로 세 는 것 입 니 다.
  • ${filepath#*/} filepath 변수 값 에서 처음부터 주어진 */ 모드 와 일치 합 니 다. 첫 번 째 일치 하 는 모드 를 삭제 하고 나머지 내용 을 되 돌려 줍 니 다.시작 에 있 는 임의의 문자열 과 일치 하 는 * 어댑터 를 사용 합 니 다.예 를 들 어 echo ${filepath#*/} 인쇄 결 과 는 subdir/testfile. txt 입 니 다.이 표현 식 의 형식 은 ${parameter#word} 입 니 다. parameter 변수 값 에서 가장 짧 은 워드 와 일치 하 는 접두사 부분 을 삭제 합 니 다.
  • ${filepath##*/} filepath 변수 값 에서 처음부터 주어진 */ 모드 와 일치 합 니 다. 마지막 일치 하 는 모드 까지 삭제 하고 나머지 내용 을 되 돌려 줍 니 다.시작 에 있 는 임의의 문자열 과 일치 하 는 * 어댑터 를 사용 합 니 다.예 를 들 어 echo ${filepath##*/} 인쇄 결 과 는 testfile. txt 이다.이 표현 식 의 형식 은 ${parameter\# 워드} 입 니 다. parameter 변수 값 에서 워드 와 가장 긴 접 두 사 를 삭제 합 니 다.
  • ${filepath%/*} filepath 변수 값 에서 마지막 에서 주어진 /* 모드 와 일치 합 니 다. 첫 번 째 일치 하 는 모드 를 삭제 하고 앞 에 남 은 내용 을 되 돌려 줍 니 다.끝 에 있 는 임의의 문자열 과 일치 하 는 * 어댑터 를 사용 합 니 다.예 를 들 어 echo ${filepath%/*} 인쇄 결 과 는 example/subdir 입 니 다.이 표현 식 의 형식 은 ${parameter% word} 입 니 다. parameter 변수 값 에서 가장 짧 은 워드 와 일치 하 는 접미사 부분 을 삭제 합 니 다.
  • ${filepath%%/*} filepath 변수 값 에서 마지막 에서 주어진 /* 모드 와 일치 하 는 이 모드 를 마지막 일치 하 는 모드 로 삭제 하고 남 은 내용 을 되 돌려 줍 니 다.끝 에 있 는 임의의 문자열 과 일치 하 는 * 어댑터 를 사용 합 니 다.예 를 들 어 echo ${filepath%%/*} 인쇄 결 과 는 example 이다.이 표현 식 의 형식 은 ${parameter% 워드} 입 니 다. parameter 변수 값 에서 워드 와 일치 하 는 가장 긴 접 두 사 를 삭제 합 니 다.
  • ${filepath/[et]/M} filepath 변수 값 에서 첫 번 째 로 일치 하 는 소문 자 e, 또는 소문 자 t 를 대문자 M 으로 교체 합 니 다.소문 자 e 나 소문 자 t 와 일치 하 는 경로 명 확장 을 사용 합 니 다.이 표현 식 의 형식 은 [et] pattern 과 일치 하 는 문자열 을 string 문자열 로 바 꾸 는 것 입 니 다.첫 번 째 일치 하 는 패턴 문자열 만 바 꿉 니 다.이 모드 문자열 은 변수 값 의 시작, 중간, 끝 부분 에 있 습 니 다.예 를 들 어 echo ${filepath/[et]/M} 인쇄 결 과 는 Mxample/subdir/testfile. txt 입 니 다.
  • ${parameter/pattern/string} filepath 변수 값 에서 일치 하 는 소문 자 e 또는 소문 자 t 를 대문자 M 으로 교체 합 니 다.소문 자 e 나 소문 자 t 와 일치 하 는 확장 ${filepath//[et]/M} 을 사용 합 니 다.pattern 모드 문자열 을 문자 '/' 로 시작 하여 일치 하 는 모든 문자열 을 바 꾸 는 것 을 표시 합 니 다.예 를 들 어 echo ${filepath//[et]/M} 인쇄 결 과 는 MxamplM/subdir/MsMfilm. MxM 입 니 다.
  • [et] filepath 변수 값 에서 일치 하 는 subdir 문자열 을 삭제 합 니 다.예 를 들 어 ${filepath/subdir} 인쇄 결 과 는 example/testfile. txt 입 니 다.이 표현 식 은 바 뀐 문자열 을 제공 하지 않 았 습 니 다. 일치 하 는 문자열 을 삭제 하 는 것 을 의미 합 니 다.echo ${filepath/subdir} 일치 하 는 접두사 만 삭제 할 수 있 습 니 다.${parameter#word} 일치 하 는 접미사 만 삭제 할 수 있 습 니 다.${parameter/pattern} 은 중간 위 치 를 포함 하여 임의의 위치의 일치 하 는 문자열 을 삭제 할 수 있 습 니 다.
  • ${parameter%word} filepath 변수 값 의 모든 문 자 를 대문자 로 변환 합 니 다.예 를 들 어 ${filepath^^} 인쇄 결 과 는 EXAMPLE/SUBDIR/TESTFILE. TXT 이다.이 표현 식 의 형식 은 ${parameter ^ pattern} 입 니 다. parameter 변수 값 에서 pattern 모드 와 일치 하 는 모든 소문 자 를 대문자 로 변환 합 니 다.pattern 모드 를 제공 하지 않 으 면 임의의 문자 와 일치 합 니 다.
  • echo ${filepath^^} filepath 변수 값 의 모든 문 자 를 소문 자로 변환 합 니 다.예 를 들 어 ${filepath,,} 인쇄 결 과 는 example/subdir/testfile. txt 입 니 다.이 표현 식 의 형식 은 ${parameter, pattern} 입 니 다. parameter 변수 값 에서 pattern 모드 와 일치 하 는 모든 대문자 자 모 를 소문 자로 변환 합 니 다.pattern 모드 를 제공 하지 않 으 면 임의의 문자 와 일치 합 니 다.
  • echo ${filepath,,} filepath 변수 값 의 첫 번 째 문 자 를 대문자 로 바 꿉 니 다.예 를 들 어 ${filepath^} 인쇄 결 과 는 Example/subdir/testfile. txt 입 니 다.이 표현 식 의 형식 은 ${parameter ^ pattern} 입 니 다. pattern 모드 와 일치 하 는 parameter 변수 값 의 첫 번 째 문 자 를 대문자 로 바 꿉 니 다.pattern 모드 를 제공 하지 않 으 면 임의의 단일 문자 와 일치 합 니 다.
  • echo ${filepath^} filepath 변수 값 의 첫 번 째 문 자 를 소문 자로 변환 합 니 다.예 를 들 어 ${filepath,} 인쇄 결 과 는 example/subdir/testfile. txt 입 니 다.이 표현 식 의 형식 은 ${parameter, pattern} 입 니 다. pattern 모드 와 일치 하 는 parameter 변수 값 의 첫 번 째 문 자 를 소문 자로 변환 합 니 다.pattern 모드 를 제공 하지 않 으 면 임의의 단일 문자 와 일치 합 니 다.

  • 위의 내용 은 여러 문자열 변수 값 과 관련 된 확장 표현 식 을 종합 적 으로 설명 하여 통일 적 으로 수집 하고 조회 할 수 있 습 니 다.
    이러한 확장 식 에 대한 상세 한 설명 과 더 많은 테스트 예 는 제 앞의 세 편의 'Bash 기법: 매개 변수 확장 사용' 으로 시작 하 는 글 을 볼 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기