변수 내용 의 삭제, 대체, 교체 (상용)

6677 단어 shell
변수 내용 의 삭제, 대체, 교체
변수 내용 삭제
${ parameter#*word}
${}: 키워드, 이 삭제 모드 가 존재 해 야 합 니 다.
parameter: 변수 이름;
\#: 변수 내용 의 맨 앞에서 오른쪽으로 삭제 하고 가장 짧 은 것 만 삭제 하 는 것 을 의미 합 니 다.
* word: 삭제 할 부분 을 대표 합 니 다. * 는 0 에서 무한 여러 개의 임의의 문 자 를 대체 하 는 마스크 입 니 다.
#:  변수 내용 의 맨 앞에서 오른쪽으로 바 꾸 는 텍스트 에 맞 는 '가장 짧 은' 하 나 를 삭제 합 니 다.
\#\#: 변 수 된 내용 의 맨 앞에서 부터 바 꾸 는 텍스트 에 맞 는 '가장 긴' 것 을 오른쪽으로 삭제 합 니 다.
예:
[root@www ~]# Dir=/usr/local/src
[root@www ~]# echo $Dir
/usr/local/src
[root@www ~]# echo ${Dir#*/}
usr/local/src
[root@www ~]# echo ${Dir##*/}
src

변수 내용 의 교체
${parameter/pattern/string}
${parameter//pattern/string}
${}: 키워드;
parameter: 변수;
키워드
pattern
: 일치 모드, 오래된 문자열
string
새 문자열
/.../..: 변수 내용 이 '오래된 문자열' 에 부합 되면 첫 번 째 오래된 문자열 은 새 문자열 로 대 체 됩 니 다.
//.../..: 변수 내용 이 '오래된 문자열' 에 부합 되면 모든 오래된 문자열 이 새 문자열 로 대 체 됩 니 다.
예:
[root@www ~]# Dir=/usr/local/src/usr/local/src
[root@www ~]# echo $Dir
/usr/local/src/usr/local/src
[root@www ~]# echo ${Dir/usr/USR}
/USR/local/src/usr/local/src
[root@www ~]# echo ${Dir//usr/USR}
/USR/local/src/USR/local/src

요약:
변수 설정 방식
기능.
${var#keyword}
변수 내용 이 처음부터 시 작 된 데이터 가 "keyword"에 맞 으 면 최 단 데 이 터 를 삭제 합 니 다.
${var##keyword}
변수 내용 이 처음부터 시 작 된 데이터 가 "keyword"에 부합 하면 최 장 데 이 터 를 삭제 합 니 다.
${var%keyword}
변수 내용 이 끝 에서 앞으로 의 데이터 가 "keyword"에 부합 되면 가장 짧 은 데 이 터 를 삭제 합 니 다.
${var%%keyword}
변수 내용 이 끝 에서 앞으로 의 데이터 가 "keyword"에 부합 되면 최 장 데 이 터 를 삭제 합 니 다.
${var/old_str/new_str}
변수 내용 이 "old str"에 부합 하면 첫 번 째 oldstr 는 newstr 교체
${var//old_str/new_srt}
변수 내용 이 "old str"에 부합 하면 모든 oldstr 는 newstr 교체
변수의 테스트 와 내용 교체
${parameter:-word}
${}: 키워드
parameter
변수
키워드
변수의 교체 내용
변수의 설정 방식
str 설정 없 음
str 빈 문자열
str 는 비 어 있 는 문자열 로 설정 되 어 있 습 니 다.
var=${str-expr}
var=expr
var=
var=$str
var=${str:-expr}
var=expr
var=expr
var=$str
var=${str+expr}
var=
var=expr
var=expr
var={str:+expr}
var=
var=
var=expr
var=${str=expr}
str=exprvar=expr
str 불변 var =
str 불변 var = $str
var={str:=expr}
str=exprvar=expr
str=exprvar=expr
str 불변 var = $str
var=${str?expr}
expr 를 stderr 로 출력
var=
var=str
var=${str:?expr}
expr 를 stderr 로 출력
expr 를 stderr 로 출력
var=str
상용 적
변수 바 꾸 기:
${parameter:-word}
Use Default Values.  If parameter is unset or null, the expansion  of  word  is  substituted.  Otherwise, the value of parameter is substituted.
기본 값 (변수 원래 내용 을 수정 하지 않 음) 을 사용 합 니 다. 변수 가 설정 되 지 않 거나 비어 있 으 면 워드 로 변 수의 기본 값 을 바 꿉 니 다. ${parameter: - word} 의 결과 반환 값 이 무엇 이 든 이 변수의 기본 값 이 설정 되 지 않 거나 비어 있 으 면 비어 있 습 니 다.
[root@www ~]# unset FQDN                                          #      
[root@www ~]# echo $FQDN
[root@www ~]# echo ${FQDN:-www.snkof.com}    #      ,  word        
www.snkof.com
[root@www ~]# FQDN=''                                                 #         
[root@www ~]# echo ${FQDN:-www.snkof.com}     #            word        
www.snkof.com
[root@www ~]# FQDN=www.google.com.hk          #      
[root@www ~]# echo ${FQDN:-www.snkof.com}     #       
www.google.com.hk
[root@www ~]# echo $FQDN                      #                                       
www.google.com.hk

${parameter:=word}
Assign Default Values.  If parameter is unset or null, the expansion of word is assigned to parameter.  The value of parameter is then substituted.   Positional  parameters  and special parameters may not be assigned to in this way.
기본 값 지정,
기본 값 을 부여 합 니 다.변수 가 설정 되 지 않 거나 비어 있 으 면 워드 의 값 을 변수의 기본 값 으로 바 꾸 고 워드 의 값 을 이 변수 에 저장 합 니 다.위치 매개 변수 와 특수 매개 변 수 는 이런 방식 으로 설정 할 수 없습니다.
[root@www ~]# unset FQDN                                                #     
[root@www ~]# echo $FQDN                                              
[root@www ~]# echo ${FQDN:=www.snkof.com}           #     ,  word           
www.snkof.com
[root@www ~]# echo $FQDN                                              #   word     FQDN      
www.snkof.com
[root@www ~]# FQDN=''                                                     #         
[root@www ~]# echo ${FQDN:=www.snkof.com}           #           word           
www.snkof.com
[root@www ~]# echo $FQDN                                              #   word     FQDN      
www.snkof.com
[root@www ~]# FQDN=www.google.com.hk                    #      
[root@www ~]# echo ${FQDN:=www.snkof.com}           #        
www.google.com.hk
[root@www ~]# echo $FQDN                                              #            
www.google.com.hk

많은 장면 에서 변수 가 원래 값 이 비어 있 을 때 워드 의 값 을 변수의 값 으로 바 꾸 고 그 다음 에 이 변수 에 저장 해 야 합 니 다.
${parameter: = word} 은 변 수 를 교체 할 수 있 을 뿐만 아니 라, 워드 의 값 을 변수의 값 이 비어 있 는 이 변수 에 할당 할 수 있 습 니 다.변수의 값 은 워드 입 니 다.
${parameter:?word}
Display  Error  if  Null or Unset.  If parameter is null or unset, the expansion of word(or a message to that effect if word is not present) is written to  the  standard  error and  the  shell,  if it is not interactive, exits.  Otherwise, the value of parameter is substituted.
변수의 값 이 비어 있 거나 설정 되 어 있 지 않 으 면 더 이상 값 이 부여 되 지 않 습 니 다. 워드 를 오류 정보 로 표시 하지만 표준 오류 출력 에 출력 됩 니 다. 이 변수의 교체 결 과 를 잘 인용 하기 위해 서 는 직접 교체 할 수 있 습 니 다. 교체 결 과 는 나중에 참조 할 수 있 도록 다른 추가 변수 에 보관 할 수 있 습 니 다.
[root@www ~]# unset FQDN
[root@www ~]# echo ${FQDN:?novalue}
-bash: FQDN: novalue        #    
[root@www ~]# echo $FQDN
                #FQDN     ,            。

이 오류 정 보 는 표준 오류 출력 으로 방향 을 정할 것 입 니 다.
${parameter: + word}: 대체 값 사용 하기
   Use Alternate Value.  If parameter is nullor  unset,  nothing is substituted, otherwise the expansion of word is substituted.
변수 가 비어 있 거나 끝 에 설정 되 어 있 으 면 아무것도 하지 않 습 니 다.변수 값 을 설정 하면 워드 의 값 을 이 변수의 값 으로 바 꿉 니 다.
[root@www ~]# echo $FQDN
                         #FQDN     
[root@www ~]# echo ${FQDN:+www.google.com.hk}
                         #      
[root@www ~]# echo $FQDN
                         #FQDN     
[root@www ~]# FQDN=www.google.com.hk # FQDN  
[root@www ~]# echo ${FQDN:+www.snkof.com}
www.snkof.com                #      ,    word  
[root@www ~]# echo $FQDN
www.google.com.hk                #  FQDN       

${parament: - word} 에 대응 하여 대응 하 는 값 만 표시 하고 변수 자 체 를 할당 하지 않 습 니 다.
어떤 변수 가 값 이 있 는 지 확인 한 후에 야 다른 값 을 사용 합 니 다.
다음으로 전송:https://blog.51cto.com/szyangxiao/1381035

좋은 웹페이지 즐겨찾기