셸 변수 처리
2694 단어 셸 프로그래밍
file=/dir1/dir2/dir3/my.file.txt
${} 를 사용하여 각각 다른 값을 바꿀 수 있습니다. 코드는 다음과 같습니다.
${file#*/}: / :dir1/dir2/dir3/my.file.txt
${file##*/}: / :my.file.txt
${file#*.}: . :file.txt
${file##*.}: . :txt
${file%/*}: / :/dir1/dir2/dir3
${file%%/*}: / :( )
${file%.*}: . :/dir1/dir2/dir3/my.file
${file%%.*}: . :/dir1/dir2/dir3/my
기억하는 방법은 다음과 같습니다. 코드는 다음과 같습니다.
왼쪽 빼기(키보드에서 #$의 왼쪽)
% 는 오른쪽 (키보드의% 는 $오른쪽에 있음) 을 제거하는 단일 기호가 가장 적게 일치합니다.두 기호가 최대 일치
${file:0:5}
: 가장 왼쪽에 있는 다섯 바이트 추출:/dir1${file:5:5}
: 다섯 번째 바이트 오른쪽에 있는 연속 다섯 바이트 추출:/dir2변수 값의 문자열을 바꿀 수도 있습니다. 코드는 다음과 같습니다.
${file/dir/path}
: 첫 번째dir를 path:/path1/dir2/dir3/my로 바꿉니다.file.txt${file//dir/path}
: 모든dir를 path:/path1/path2/path3/my로 바꿉니다.file.txt ${}를 사용하면 서로 다른 변수 상태에 대해 값을 부여할 수 있습니다. (설정하지 않았습니다. 빈 값, 비공식 값):
${file-my.file.txt}
: 만약 $file
설정하지 않았다면 my를 사용하십시오.file.txt는 반환 값을 합니다.(빈값 및 비공값 시 처리하지 않음)${file:-my.file.txt}
: $file
가 공값으로 설정되지 않거나 없으면 my를 사용합니다.file.txt는 반환 값을 합니다.(비어 있지 않을 때 처리하지 않음)${file+my.file.txt}
: 만약 $file
가 비어 있거나 비어 있지 않을 경우 모두 my를 사용합니다.file.txt는 반환 값을 합니다.(설정하지 않았을 때 처리하지 않음)${file:+my.file.txt}
: $file
가 비어 있으면 my를 사용합니다.file.txt는 반환 값을 합니다.(값이 설정되지 않았을 때 처리하지 않음)${file=my.file.txt}
: $file
가 설정되지 않았을 경우 my를 사용합니다.file.txt는 반환 값을 하고 $file에 my를 부여합니다.file.txt . (빈값 및 비빈값 시 처리하지 않음)${file:=my.file.txt}
: $file
빈값으로 설정하지 않거나 설정하지 않으면 my를 사용합니다.file.txt는 반환 값을 하고 $file에 my를 부여합니다.file.txt . (비어 있지 않을 때 처리하지 않음)${file?my.file.txt}
: $file
를 설정하지 않으면 my.file.txt를 stdERR로 내보냅니다.(비어 있는 값 및 비어 있지 않은 값은 처리하지 않음)${file:?my.file.txt}
: $file
가 설정되지 않거나 비어 있으면 my.file.txt를 stdERR로 내보냅니다.(값이 비어 있지 않으면 처리하지 않음)${#var}변수 값의 길이를 계산할 수 있습니다.${#file}
27을 얻을 수 있습니다. 왜냐하면/dir1/dir2/dir3/my.file.txt는 27바이트입니다.