변수에 대해 자세히 논의한 BASH Shell의 마지막 두 기사는 독자들 사이에서 높이 평가되었습니다. 우리는 Tecmint-Team으로서 세부 사항에서 다루는 최신, 최신 및 관련 주제를 제공하기를 열망합니다. 또한 우리는 항상 해당 주제의 주요 관점을 다루려고 노력합니다.
다음은 이 주제를 닫기 전에 쉘에 정의된 변수와 대체 변수를 살펴보는 Linux 변수에 대한 마지막 기사입니다.
Bash는 명령이 실제로 실행되기 전에 변수 대체를 수행합니다. Linux Bash Shell은 명령을 실행하기 전에 모든 '$'기호를 검색하여 변수 값으로 바꿉니다. Bash 변수 대체 프로세스는 한 번만 수행됩니다. 중첩된 변수가 있으면 어떻게 될까요?
참고 :중첩 변수란 변수 내부에 선언된 변수를 의미합니다. 아래 예에서 위의 시나리오를 살펴보겠습니다.
아래와 같이 Read-Only, Executable 변수를 선언합니다.
[email protected]:~$ declare -rx Linux_best_website="www.tecmint.com"
저장된 변수의 값을 확인하십시오.
[email protected]:~$ printf "%s" "$Linux_best_website" www.tecmint.com
이제 다시 읽기 전용 및 실행 가능한 다른 변수를 선언합니다.
[email protected]:~$ declare -rx Linux_website="Linux_best_website"
이제 상황은 두 개의 변수를 정의한 것입니다.
값이 "www.tecmint.com"인 'Linux_best_website'
및 값이 "Linux_best_website"인 'Linux_website'
아래의 한 줄 명령을 실행하면 결과는 어떻게 될까요?
[email protected]:~$ printf "%s" "$Linux_website"
먼저 '$Linux_website 변수를 대체해야 합니다. ', 값 "Linux_best_website ", 그리고 "$Linux_best_website "는 다시 변수 값이 "www.tecmint.com입니다. ". 따라서 아래 명령 실행의 최종 출력은 다음과 같아야 합니다.
[email protected]:~$ printf "%s" "$Linux_website" www.tecmint.com
그러나 불행히도 이것은 상황이 아닙니다. 우리가 얻는 출력은 Linux_best_website입니다. .
이유? 예! Bash는 변수 값을 한 번만 대체합니다. 변수를 자주 대체해야 하고 변수를 두 번 이상 대체해야 하는 복잡한 스크립트 및 프로그램은 어떻습니까?
다음은 'eval 명령입니다. '는 스크립트에서 두 번 이상 변수 대체의 추가 작업을 수행합니다. 다음은 전체 작업을 유리처럼 투명하게 만드는 예입니다.
변수 x 선언 , 값은 10 .
[email protected]:~/Desktop$ declare x=10
x 변수 값 확인 , 방금 정의했습니다.
[email protected]:~/Desktop$ echo $yx x10
변수 y 선언 , 그 값은 x .
[email protected]:~/Desktop$ declare y=x
y 변수 값 확인 , 방금 정의했습니다.
[email protected]:~/Desktop$ echo $y x
다음은 BASH의 문제입니다. 변수 대체의 추가 라운드를 수행하지 않는 일회성 변수 대체. 우리는 '평가를 사용하고 있습니다. ' 이 문제를 해결하는 명령입니다.
[email protected]:~/Desktop$ eval y=$x
이제 변수 'y의 값을 확인하십시오. '.
[email protected]:~/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에 연결하세요. . 아래 댓글 섹션에 소중한 피드백을 제공하는 것을 잊지 마세요.