내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
$
$()
용법매개변수를 전달하기 위해 스크립트와 함수에 사용되는 쉘의 특수 변수입니다.
다음과 같은 특수 위치 매개변수 변수가 있습니다.
변하기 쉬운 | 효과 |
---|---|
$0 | 쉘 스크립트 파일 이름 및 스크립트 경로 가져오기 |
$n | 쉘 스크립트의 n번째 매개변수를 가져옵니다. n은 1에서 9 사이입니다. 9보다 크면 일부{} ,좋다{$10} |
$# | 실행된 쉘 스크립트 뒤에 있는 총 매개변수 수를 가져옵니다. |
$* | 따옴표 없이 쉘 스크립트의 모든 매개변수를 얻으십시오. 이는 다음과 같습니다.$@ 이 함수와 따옴표 "$*"는 다음과 같습니다.모든 매개변수를 단일 문자열로 수신합니다. |
$@ | 따옴표가 없으면 위와 같은 효과가 나타납니다.모든 매개변수를 독립된 문자열로 수신 |
검색방법:man bash
,찾다Special Parameters
변하기 쉬운 | 효과 |
---|---|
$? | 마지막 명령 실행 상태의 반환 값, 0은 정확, 0이 아닌 경우 실패 |
$$ | 현재 쉘 스크립트의 프로세스 번호 |
$! | 마지막 백그라운드 프로세스의 PID |
$_ | 마지막 명령의 마지막 매개변수 가져오기 |
-n
: 줄바꿈 없이 내용 출력-e
: 이스케이프 문자 해석 n
: 개행r
: 입력하다t
:탭b
:역행 키이v
: 세로 탭 문자eval ls; cd ~
exec
실행 후 자동으로exit
문법:
문법 | 효과 |
---|---|
# | 처음부터 가장 짧은 일치 항목을 제거합니다. |
## | 처음부터 가장 긴 일치 항목을 제거합니다. |
% | 끝에서 가장 짧은 일치 항목을 제거합니다. |
%% | 끝에서 가장 긴 일치 항목을 제거합니다. |
# | 지정된 문자 콘텐츠 차단 |
a*c | a로 시작하고 중간에 임의 개수의 문자가 있고 c로 끝나는 문자열과 일치합니다. |
${变量} | 변수 값을 반환합니다. |
${#变量} | 가변 길이, 문자 길이 반환 |
${变量:start} | 변수 오프셋 값 뒤의 문자를 반환합니다. |
${变量:start:length} | 오프셋 후 길이가 제한된 문자 추출 |
${变量#word} | 변수의 시작 부분에서 가장 짧은 일치 단어 하위 문자열을 삭제합니다. |
${变量##word} | 변수의 시작 부분에서 가장 긴 일치 단어를 삭제합니다. |
${变量%word} | 변수 끝에서 가장 짧은 일치 단어 하위 문자열을 제거합니다. |
${变量%%word} | 변수 끝에서 가장 긴 일치 단어 하위 문자열을 제거합니다. |
${变量/pattern/string} | 첫 번째로 일치하는 패턴을 문자열로 교체 |
${变量//pattern/string} | 모든 패턴을 문자열로 교체 |
운용예: 파일 이름 삭제
# 通过⼦串的替换⽅式
snowk@SnowKYP# f=stu_102999_1_finished.jpg
# 变量的⼦串功能,去掉后缀
snowk@SnowKYP# echo ${f//_finished/}
stu_102999_1.jpg
# 利⽤变量的反引⽤替换⽂件名
snowk@SnowKYP# mv $f `echo ${f//_finished/}`
# 剩下的⽂件,利⽤循环操作
# 找出剩下所有需要替换的jpg⽂件
snowk@SnowKYP# ls *fin*.jpg
stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg
stu_102999_5_finished.jpg
# 写shell循环代码,循环操作
# 去掉所有jpg⽂件的_finished后缀
snowk@SnowKYP# for file in `ls *fin*.jpg`;do mv $file `echo ${file//_finished/}`;done
snowk@SnowKYP# ls *.jpg
stu_102999_1.jpg stu_102999_2.jpg stu_102999_3.jpg stu_102999_4.jpg stu_102999_5.jpg
parameter,参数,范围
${parameter:-word}
:만약에parameter
변수 값이 비어 있습니다. 반환word
끈${parameter:=word}
:만약에parameter
변수 값이 비어 있는 경우word
변수 값을 대체하고 해당 값을 반환합니다.${parameter:?word}
:만약에parameter
변수 값이 비어 있습니다.word
~처럼stderr
출력, 그렇지 않으면 변수 값 출력 ${parameter:+word}
:만약에parameter
변수 값이 비어 있으면 아무것도 하지 말고, 그렇지 않으면word
반품# 原脚本命令,有bug,有歧义
find ${file_path} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
# 修正后的脚本命令
# 如果有bug起义,就在当前目录搜索并执行删除
find ${file_path:=/tmp} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f