Linux 학습 의 셸 프로 그래 밍 기초 (3)
(1) 변수 내용 의 삭제 와 대체
변수 설정 방식
설명 하 다.
${변수\# 키워드}
변수 내용 이 처음부터 시 작 된 데이터 가 키워드 에 맞 으 면 최 단 데 이 터 를 삭제 합 니 다.
${변수\#\# 키워드}
변수 내용 이 처음부터 시 작 된 데이터 가 키워드 에 맞 으 면 최 장 데 이 터 를 삭제 합 니 다.
${변수% 키워드}
변수 내용 이 끝 에서 앞으로 의 데이터 가 키워드 에 부합 되면 가장 짧 은 데 이 터 를 삭제 합 니 다.
${변수%% 키워드}
변수 내용 이 끝 에서 앞으로 의 데이터 가 키워드 에 부합 되면 최 장 데 이 터 를 삭제 합 니 다.
${변수/오래된 문자열/새 문자열}
변수 내용 이 오래된 문자열 에 맞 으 면 첫 번 째 오래된 문자열 이 새 문자열 로 대 체 됩 니 다.
${변수//오래된 문자열/새 문자열}
변수 내용 이 오래된 문자열 에 맞 으 면 모든 오래된 문자열 이 새 문자열 로 대 체 됩 니 다.
[dalianmao@localhost ~]$ path=$PATH
[dalianmao@localhost ~]$ echo $path
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/dalianmao/bin
[dalianmao@localhost ~]$ echo ${path#/*:}
/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/dalianmao/bin
[dalianmao@localhost ~]$ echo ${path##/*:}
/home/dalianmao/bin
[dalianmao@localhost ~]$ echo ${path%/*:}
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/dalianmao/bin
[dalianmao@localhost ~]$ echo ${path%:/*}
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
[dalianmao@localhost ~]$ echo ${path%%:/*}
/usr/local/bin
[dalianmao@localhost ~]$ echo ${path/bin/BIN}
/usr/local/BIN:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/dalianmao/bin
[dalianmao@localhost ~]$ echo ${path//bin/BIN}
/usr/local/BIN:/BIN:/usr/BIN:/usr/local/sBIN:/usr/sBIN:/sBIN:/home/dalianmao/BIN
[dalianmao@localhost ~]$
(2) 변수의 테스트 와 내용 교체
변수 설정 방식
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=expr var=expr
str 불변 var =
str 불변 var = $str
var=${str:=expr}
str=expr var=expr
str=expr var=expr
str 불변 var = $str
var=${str?expr}
expr 를 stderr 로 출력
var=
var=$str
var=${str:?expr}
expr 를 stderr 로 출력
expr 를 stderr 로 출력
var=$str
eg1:
[dalianmao@localhost ~]$ clear
[dalianmao@localhost ~]$ unset str;var=${str-dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $str
dalianmao
[dalianmao@localhost ~]$ unset str;var=${str:-dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $str
dalianmao
[dalianmao@localhost ~]$ str=xianyu;var=${str-dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $str
xianyu
xianyu
[dalianmao@localhost ~]$ str=xianyu;var=${str:-dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $str
xianyu
xianyu
[dalianmao@localhost ~]$ str='';var=${str-dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $str
[dalianmao@localhost ~]$ str='';var=${str:-dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $str
dalianmao
[dalianmao@localhost ~]$
eg2.
[dalianmao@localhost ~]$ unset str;var=${str+dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $str
[dalianmao@localhost ~]$ unset str;var=${str:+dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $str
[dalianmao@localhost ~]$ str='';var=${str+dalianmao};var1=${str:+dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $var1;echo $str
dalianmao
[dalianmao@localhost ~]$ str=xianyu;var=${str+dalianmao};var1=${str:+dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $var1;echo $str
dalianmao
dalianmao
xianyu
eg3.
[dalianmao@localhost ~]$ unset str;var=${str=dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $str
dalianmao
dalianmao
[dalianmao@localhost ~]$ unset str;var1=${str:=dalianmao}
[dalianmao@localhost ~]$ echo $var1;echo $str
dalianmao
dalianmao
[dalianmao@localhost ~]$ str='';var=${str=dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $str
[dalianmao@localhost ~]$ str='';var1=${str:=dalianmao}
[dalianmao@localhost ~]$ echo $var1;echo $str
dalianmao
dalianmao
[dalianmao@localhost ~]$ str=xianyu;var=${str=dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $str
xianyu
xianyu
[dalianmao@localhost ~]$ str=xianyu;var1=${str=dalianmao}
[dalianmao@localhost ~]$ echo $var1;echo $str
xianyu
xianyu
[dalianmao@localhost ~]$ str=xiayu;var1=${str:=dalianmao}
[dalianmao@localhost ~]$ echo $var1;echo $str
xiayu
xiayu
eg4.
[dalianmao@localhost ~]$ unset str;var=${str?dalianmao}
-bash: str: dalianmao
[dalianmao@localhost ~]$ unset str;var1=${str:?dalianmao}
-bash: str: dalianmao
[dalianmao@localhost ~]$ str='';var=${str?dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $str
[dalianmao@localhost ~]$ str='';var1=${str:?dalianmao}
-bash: str: dalianmao
[dalianmao@localhost ~]$ str=xianyu;var=${str?dalianmao}
[dalianmao@localhost ~]$ echo $var;echo $str
xianyu
xianyu
[dalianmao@localhost ~]$ str=xianyu;var1=${str:?dalianmao}
[dalianmao@localhost ~]$ echo $var1
xianyu
2. 마스크 와 특수 기호
(1) 마스크
기호.
의의
*
0 개 에서 무한 여러 개의 임 의 문 자 를 대표 합 니 다.
?
대표 님, 임의의 문자 가 있 을 거 예요.
[]
괄호 안에 있 는 문자 (임 의 문자 가 아 닌) 가 있 음 을 나타 낸다.예 를 들 어 abcd 는 반드시 하나의 문자 가 있 습 니 다. a, b, c, d 이 네 개의 모든 문자 일 수 있 습 니 다.
[-]
괄호 안에 마이너스 가 있 을 때 인 코딩 순서 에 있 는 모든 문 자 를 대표 합 니 다.예 를 들 어 [0 - 9] 는 0 에서 9 사이 의 모든 숫자 를 대표 합 니 다. 왜냐하면 숫자의 어족 인 코딩 은 연속 적 이기 때 문 입 니 다!
[^]
만약 에 괄호 안의 첫 번 째 문자 가 지수 기호 (^) 라면 역방향 선택 을 나타 낸다. 예 를 들 어 [^ abc] 는 반드시 한 글자 가 있 고 a, b, c 의 다른 문자 가 아니면 받 아들 이 겠 다 는 뜻 이다.
(2) 특수 기호
기호.
내용.
#
주석 부호
\
점프 기호
|
파이프라인
;
연속 명령 하달 구분자
~
사용자 의 홈 디 렉 터 리
$
변수 전도 부 호 를 사용 합 니 다: 즉, 변수 이전에 추가 해 야 할 변수 대체 값 입 니 다.
&
작업 제어: 명령 을 배경 으로 작업 합 니 다.
!
논리 연산 의미 의 비 not 의 뜻!
/
디 렉 터 리 기호: 경로 구분 기호
> , >>
데이터 흐름 중 가이드: 출력 가이드, 각각 대체 와 누적
< , <<
데이터 스 트림 가이드
' '
작은 따옴표, 변수 교체 기능 이 없습니다.
" "
변수 교체 기능 이 있 습 니 다!
` `
두 개 ` 중간 에 먼저 실행 할 수 있 는 명령 을 위해 $() 를 사용 할 수 있 습 니 다.
()
중간 에 하위 셸 의 시작 과 끝 입 니 다.
{}
중간 에 명령 블록 을 위 한 조합!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.