Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

Linux의 중첩 변수 대체 및 사전 정의된 BASH 변수 – 11부

변수에 대해 자세히 논의한 BASH Shell의 마지막 두 기사는 독자들 사이에서 높이 평가되었습니다. 우리는 Tecmint-Team으로서 세부 사항에서 다루는 최신, 최신 및 관련 주제를 제공하기를 열망합니다. 또한 우리는 항상 해당 주제의 주요 관점을 다루려고 노력합니다.

Linux의 중첩 변수 대체 및 사전 정의된 BASH 변수 – 11부

다음은 이 주제를 닫기 전에 쉘에 정의된 변수와 대체 변수를 살펴보는 Linux 변수에 대한 마지막 기사입니다.

Bash는 명령이 실제로 실행되기 전에 변수 대체를 수행합니다. Linux Bash Shell은 명령을 실행하기 전에 모든 '$'기호를 검색하여 변수 값으로 바꿉니다. Bash 변수 대체 프로세스는 한 번만 수행됩니다. 중첩된 변수가 있으면 어떻게 될까요?

참고 :중첩 변수란 변수 내부에 선언된 변수를 의미합니다. 아래 예에서 위의 시나리오를 살펴보겠습니다.

아래와 같이 Read-Only, Executable 변수를 선언합니다.

admin@wsxdn.com:~$ declare -rx Linux_best_website="www.tecmint.com"

저장된 변수의 값을 확인하십시오.

admin@wsxdn.com:~$ printf "%s" "$Linux_best_website" 

www.tecmint.com

이제 다시 읽기 전용 및 실행 가능한 다른 변수를 선언합니다.

admin@wsxdn.com:~$ declare -rx Linux_website="Linux_best_website"

이제 상황은 두 개의 변수를 정의한 것입니다.

값이 "www.tecmint.com"인 'Linux_best_website'
및 값이 "Linux_best_website"인 'Linux_website'

아래의 한 줄 명령을 실행하면 결과는 어떻게 될까요?

admin@wsxdn.com:~$ printf "%s" "$Linux_website"

먼저 '$Linux_website 변수를 대체해야 합니다. ', 값 "Linux_best_website ", 그리고 "$Linux_best_website "는 다시 변수 값이 "www.tecmint.com입니다. ". 따라서 아래 명령 실행의 최종 출력은 다음과 같아야 합니다.

admin@wsxdn.com:~$ printf "%s" "$Linux_website" 

www.tecmint.com

그러나 불행히도 이것은 상황이 아닙니다. 우리가 얻는 출력은 Linux_best_website입니다. .

이유? 예! Bash는 변수 값을 한 번만 대체합니다. 변수를 자주 대체해야 하고 변수를 두 번 이상 대체해야 하는 복잡한 스크립트 및 프로그램은 어떻습니까?

다음은 'eval 명령입니다. '는 스크립트에서 두 번 이상 변수 대체의 추가 작업을 수행합니다. 다음은 전체 작업을 유리처럼 투명하게 만드는 예입니다.

변수 x 선언 , 값은 10 .

admin@wsxdn.com:~/Desktop$ declare x=10

x 변수 값 확인 , 방금 정의했습니다.

admin@wsxdn.com:~/Desktop$ echo $yx

x10

변수 y 선언 , 그 값은 x .

admin@wsxdn.com:~/Desktop$ declare y=x

y 변수 값 확인 , 방금 정의했습니다.

admin@wsxdn.com:~/Desktop$ echo $y 

x

다음은 BASH의 문제입니다. 변수 대체의 추가 라운드를 수행하지 않는 일회성 변수 대체. 우리는 '평가를 사용하고 있습니다. ' 이 문제를 해결하는 명령입니다.

admin@wsxdn.com:~/Desktop$ eval y=$x

이제 변수 'y의 값을 확인하십시오. '.

admin@wsxdn.com:~/Desktop$ echo $y 

10

만세! 문제가 수정되었으며 '평가 ' 명령이 레이스에서 이겼습니다 :)

말할 것도 없이 '평가 ' 명령은 큰 스크립트 프로그램에서 매우 유용하며 매우 편리한 도구입니다.

이 게시물의 마지막 부분은 BASH 미리 정의된 변수입니다. 아니! 이 목록을 보고 당황하지 마십시오. 몇 가지를 제외하고 스크립트 작성을 시작하기 전에 전체 목록을 기억할 필요가 없습니다. 학습 과정의 일환으로 BASH 사전 정의 변수 목록을 제시합니다.

아니요. 배시 변수 결과
1 자동 재개 중지된 작업에 대한 프로세스 명령 완료.
2 배쉬 쉘의 경로.
3 BASH_ENV 프로필 파일의 이름을 표시합니다.
4 BASH_VERSION Bash 버전 표시
5 BASH_VERSINFO 자세한 버전 정보를 표시합니다.
6 BASH_VERSINFO[0] 주 버전 번호(릴리스)입니다.
7 BASH_VERSINFO[1] 부 버전 번호(버전).
8 BASH_VERSINFO[2] 패치 수준입니다.
9 BASH_VERSINFO[3] 빌드 버전입니다.
10 BASH_VERSINFO[4] 출시 상태(예:beta1 ).
11 BASH_VERSINFO[5] MACHTYPE의 값 .
12 CDPATH 콜론으로 구분된 디렉토리 목록입니다.
13 표준 출력의 줄당 문자 수.
14 EUID 현재 사용자의 사용자 ID입니다.
15 FCEDIT fc 명령의 기본 텍스트 편집기입니다.
16 FUNCNAME 재미의 이름
17 그룹 사용자가 속한 그룹.
18 히스트파일 명령 기록이 포함된 파일입니다.
19 홈 디렉토리의 이름입니다.
20 라인 표준 출력의 가로줄 수.
21 메일 수신 메일을 확인할 파일 이름
22 OSTYPE 운영 체제의 이름입니다.
23 OLDPWD 이전 작업 디렉토리
24 비밀번호 현재 작업 디렉토리
25 랜덤 임의의 숫자를 인쇄합니다.
26 사용할 기본 쉘
27 시간 형식 시간 명령의 형식입니다.
28 UID 현재 사용자의 ID

사전 정의된 BASH 변수의 목록은 엄청나게 많습니다. 우리는 가장 자주 사용되는 목록을 만들려고 노력했습니다.

지금은 여기까지입니다. 또 재미있는 기사로 찾아오겠습니다. 그때까지 계속 지켜봐 주시고 TecMint에 연결하세요. . 아래 댓글 섹션에 소중한 피드백을 제공하는 것을 잊지 마세요.