셸 변 수 를 자세히 설명 합 니 다.

5256 단어 shell변량
1.프로필
변 수 는 모든 프로 그래 밍 언어 에서 없어 서 는 안 될 구성 부분 으로 변 수 는 각종 데 이 터 를 저장 하 는 데 사용 된다.스 크 립 트 언어 는 변 수 를 정의 할 때 종 류 를 가리 키 지 않 고 직접 값 을 부여 하면 됩 니 다.Shell 변수 도 이 규칙 을 따 릅 니 다.
Bash 셸 에서 모든 변수의 값 은 문자열 입 니 다.변 수 를 할당 할 때 따옴표 가 있 든 없 든 값 은 문자열 로 저 장 됩 니 다.이것 은 Bash 셸 이 기본 적 인 상황 에서 변수 유형 을 구분 하지 않 는 다 는 것 을 의미한다.정수 와 소 수 를 변수 에 할당 하 더 라 도 문자열 로 간주 된다 는 점 은 대부분의 프로 그래 밍 언어 와 다르다.예 를 들 어 C/C++,변 수 는 정수,부동 소수점,문자열,불 등 여러 가지 유형 으로 나 뉜 다.물론 필요 하 다 면 declare/typeset Shell 에 명령 표시 식 으로 변 수 를 정의 할 수 있 습 니 다.그러나 일반적인 상황 에서 이 필요 가 없습니다.Shell 개발 자 는 코드 를 작성 할 때 스스로 값 의 유형 을 주의 하면 됩 니 다.
2.변수 유형
Shell 에서 변수의 역할 영역 과 생명 주기 에 따라 Shell 변 수 는 네 가지 유형 으로 나 눌 수 있 습 니 다.
(1)영구 환경 변수:설정 파일 을 수정 해 야 합 니 다.변 수 는 영구적 으로 유효 합 니 다.
(2)임시 환경 변수:export 명령 행 성명 을 사용 하면 됩 니 다.변 수 는 Shell 스 크 립 트 프로 세 스 가 끝 난 후에 도 유효 하지만 현재 Shell 세 션 을 닫 으 면 유효 하지 않 습 니 다.
(3)전역 변수:스 크 립 트 에서 정의 합 니 다.현재 Shell 스 크 립 트 에서 만 유효 합 니 다.다른 Shell 스 크 립 트 프로 세 스 는 접근 할 수 없습니다.그 역할 도 메 인 은 정 의 된 위치 부터 스 크 립 트 가 끝나 거나 삭 제 된 곳 까지 표 시 됩 니 다.전역 변 수 는 Shell 함수 에서 정의 할 수도 있 고 Shell 함수 밖에서 정의 할 수도 있 습 니 다.Shell 함수 에서 정의 하 는 변 수 는 기본적으로 global 이 고 역할 도 메 인 은'함수 가 호출 될 때 변 수 를 정의 하 는 곳'에서 시작 하여 스 크 립 트 가 끝나 거나 삭 제 된 곳 으로 표 시 될 때 까지 입 니 다.

#!/bin/bash

globalVar=dablelv	#    
(4)부분 변수.Shell 스 크 립 트 에 local 키 워드 를 사용 하여 정의 하 는 변 수 를 함수 에 표시 합 니 다.그 역할 영역 은 함수 내 에 국한 된다.같은 이름 의 local 변 수 는 global 변 수 를 차단 합 니 다.

#!/bin/bash

function test()
{
	local localVar=dablelv	#    
}
test
echo $localVar			 	#    
3.변수 정의
Shell 은 다음 세 가지 변 수 를 정의 하 는 방식 을 지원 합 니 다.

var=value
var='value'
var="value"
var 는 변수 이름 이 고 value 는 변수 에 부 여 된 값 입 니 다.value 에 빈 칸,Tab 등 공백 문자 가 포함 되 어 있 지 않 으 면 따옴표 를 사용 하지 않 아 도 됩 니 다.value 에 공백 문자 가 포함 되 어 있다 면 따옴표 로 둘러싸 야 합 니 다.작은 따옴표 를 사용 하 는 것 과 작은 따옴표 를 사용 하 는 것 도 차이 가 있 습 니 다.잠시 후에 자세히 설명 하 겠 습 니 다.할당 번호 주위 에 빈 칸 이 있어 서 는 안 됩 니 다.이것 은 대부분의 프로 그래 밍 언어 와 다 를 수 있 습 니 다.
Shell 변수의 명명 규범 은 대부분의 프로 그래 밍 언어 와 같 습 니 다.
(1)변수 명 은 숫자,자모,밑줄 로 구성 된다.
(2)알파벳 이나 밑줄 로 시작 해 야 한다.
(3)셸 의 키 워드 를 사용 할 수 없습니다.(help 명령 을 통 해 보존 키 워드 를 볼 수 있 습 니 다.)
변수 정의 예제:

name='dablelv'
home="  "
age=28
4.접근 변수
정 의 된 변 수 를 사용 합 니 다.변수 이름 앞 에 달러 기호$를 추가 하면 됩 니 다.예 를 들 어:

name="dablelv"
echo $name
echo ${name}
변수 이름 밖의 괄호{}는 선택 할 수 있 습 니 다.추가 하 든 안 하 든 좋 습 니 다.괄호 를 넣 는 것 은 해석 기 가 변수의 경 계 를 식별 하 는 데 도움 을 주기 위해 서 입 니 다.예 를 들 어 다음 과 같은 상황 입 니 다.

skill="Java"
echo "I am good at ${skill}Script"
skill 변수 에 괄호 를 넣 지 않 으 면 해석 기 는$skillScript를 변수(값 이 비어 있 음)로 생각 하고 코드 실행 결 과 는 우리 가 원 하 는 모습 이 아 닙 니 다.
모든 변수 에 괄호{}를 추가 하 는 것 을 추천 합 니 다.이것 은 좋 은 프로 그래 밍 습관 입 니 다.
5.변수의 값 수정
정 의 된 변 수 는 다음 과 같이 다시 할당 할 수 있 습 니 다.

name='dablelv'
echo $name
name="billwong"
두 번 째 변수 할당 시 변수 이름 앞 에 추가 할 수 없습니다.변 수 를 사용 할 때 만 추가 할 수 있 고 변 수 를 사용 할 때 만 추가 할 수 있 으 며 변 수 를 사용 할 때 만 추가 할 수 있 습 니 다.
6.작은 따옴표 와 작은 따옴표 의 차이
변 수 를 정의 할 때 변수의 값 은 작은 따옴표 로 둘러싸 일 수도 있 고 두 따옴표 로 둘러싸 일 수도 있 습 니 다.이들 은 도대체 어떤 차이 가 있 습 니까?아래 의 코드 를 예 로 들 어 설명 해도 무방 하 다.

#!/bin/bash

name='dablelv'
str1='     ${name}'
str2="     ${name}"
echo $str1
echo $str2
실행 결과:
제 이름 은${name}입 니 다.
제 이름 은 dablelv 입 니 다.
작은 따옴표 로 변 수 를 둘 러 쌀 때 작은 따옴표 안에 있 는 것 을 출력 합 니 다.내용 에 변수 와 명령 이 있 더 라 도 그대로 출력 합 니 다.이 방식 은 변수,명령 등 을 해석 하지 않 으 려 는 순수한 문자열 을 표시 하 는 상황 을 정의 하 는 데 적합 하 다.
두 따옴표 로 변 수 를 둘 러 싼 값 을 출력 할 때 두 따옴표 의 변수 이름과 명령 을 그대로 출력 하 는 것 이 아 닙 니 다.이 방식 은 문자열 에 변수 와 명령 이 붙 어 있 고 분석 한 후에 출력 할 변 수 를 정의 하 는 데 적합 합 니 다.
Point Advice:변수의 내용 이 숫자 라면 따옴표 를 붙 이지 않 아 도 됩 니 다.원본 출력 이 필요 하 다 면 따옴표 추가 하기;다른 특별한 요구 가 없 는 문자열 등 은 작은 따옴표 를 붙 이 는 것 이 좋 습 니 다.변 수 를 정의 할 때 작은 따옴표 를 붙 이 는 것 이 가장 흔 한 사용 장면 입 니 다.
7.명령 의 결 과 를 변수 에 할당 합 니 다.
Shell 도 명령 의 실행 결 과 를 변수 에 할당 하 는 것 을 지원 합 니 다.흔히 볼 수 있 는 것 은 다음 과 같은 두 가지 방식 이 있 습 니 다.

variable=`command`
variable=$(command)
첫 번 째 방식 은 명령 을 반 따옴표 로 둘러싸 고 반 따옴표 와 작은 따옴표 가 매우 비슷 하여 헷 갈 리 기 쉬 우 므 로 이런 방식 을 사용 하 는 것 을 추천 하지 않 습 니 다.두 번 째 방식 은 명령 을$()로 둘러싸 고 구분 이 뚜렷 하기 때문에 이런 방식 을 추천 합 니 다.
예 를 들 어 두 개의 수 치 를 특정한 변수 에 부여 하 는 것 이다.

var1=1
var2=2
varAdd1=`expr $var1 + $var2`
varAdd2=$(expr $var1 + $var2)
8.변수 만 읽 기
readonly 명령 을 사용 하거나declare -r또는typeset -r를 사용 하면 변 수 를 읽 기 전용 변수 로 정의 할 수 있 으 며,읽 기 전용 변수의 값 은 변경 할 수 없습니다.

name="dablelv"
readonly name

declare -r name="dablelv"

typeset -r name="dablelv"
9.변수 삭제
unset 내장 명령 을 사용 하면 변 수 를 삭제 할 수 있 습 니 다.문법:

unset variable_name
unset 명령 은 읽 기 전용 변 수 를 삭제 할 수 없습니다.변수 가 삭 제 된 후 다시 사용 할 수 없습니다....와 같다

#!/bin/bash

name="dablelv"
unset name
echo $name
위의 스 크 립 트 는 출력 이 없습니다.
이상 은 셸 변수의 상세 한 내용 입 니 다.셸 변수 에 대한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기