웹사이트 검색

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


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

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

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

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

아래와 같이 읽기 전용이고 실행 가능한 변수를 선언합니다.

avi@localhost:~$ declare -rx Linux_best_website="linux-console.net"

저장된 변수의 값을 확인하세요.

avi@localhost:~$ printf "%s" "$Linux_best_website" 

linux-console.net

이제 다시 읽기 전용이고 실행 가능한 또 다른 변수를 선언하십시오.

avi@localhost:~$ declare -rx Linux_website="Linux_best_website"

이제 상황은 두 가지 변수를 정의했습니다.

'Linux_best_website', 값은 "linux-console.net"
및 값이 "Linux_best_website"인 'Linux_website'

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

avi@localhost:~$ printf "%s" "$Linux_website"

먼저 '$Linux_website' 변수를 "Linux_best_website " 값으로 대체해야 하며 그런 다음 "$Linux_best_website "는 다시 값이 변수입니다. 이는 "linux-console.net "입니다. 따라서 아래 명령을 실행하면 최종 출력이 다음과 같아야 합니다.

avi@localhost:~$ printf "%s" "$Linux_website" 

linux-console.net

하지만 불행하게도 이는 상황이 아닙니다. 우리가 얻는 결과는 Linux_best_website입니다.

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

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

값이 10인 변수 x를 선언합니다.

avi@localhost:~/Desktop$ declare x=10

방금 정의한 변수 x의 값을 확인하세요.

avi@localhost:~/Desktop$ echo $yx

x10

값이 x인 변수 y를 선언합니다.

avi@localhost:~/Desktop$ declare y=x

방금 정의한 변수 y의 값을 확인하세요.

avi@localhost:~/Desktop$ echo $y 

x

여기에 추가 변수 대체 라운드를 수행하지 않는 일회성 변수 대체의 BASH 문제가 있습니다. 이 문제를 해결하기 위해 'eval' 명령을 사용하고 있습니다.

avi@localhost:~/Desktop$ eval y=$x

이제 변수 'y'의 값을 확인하세요.

avi@localhost:~/Desktop$ echo $y 

10

만세! 문제가 해결되었으며 'eval' 명령이 승리했습니다 :)

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

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

No. BASH VARIABLE RESULT
1 auto_resume Process command completion for the stopped jobs.
2 BASH PATH of the shell.
3 BASH_ENV Shows the name of the profile file
4 BASH_VERSION Shows the version of Bash
5 BASH_VERSINFO Shows Detailed version information.
6 BASH_VERSINFO[0] The major version number (the release).
7 BASH_VERSINFO[1] The minor version number (the version).
8 BASH_VERSINFO[2] The patch level.
9 BASH_VERSINFO[3] The build version.
10 BASH_VERSINFO[4] The release status (for example, beta1 ).
11 BASH_VERSINFO[5] The value of MACHTYPE .
12 CDPATH List of directories separated by colon.
13 COLUMNS Number of Characters per line on Standard Output.
14 EUID User ID of the current user.
15 FCEDIT The default text editor for the fc command.
16 FUNCNAME The name of the fun
17 GROUPS Groups of which the user is a Member.
18 HISTFILE The file containing the command history.
19 HOME The name of your home directory.
20 LINES Number of horizontal lines on Standard Output.
21 MAIL Name of a file to check for incoming mail
22 OSTYPE Name of the operating system.
23 OLDPWD The previous working directory
24 PWD The current working directory
25 RANDOM Prints a random number
26 SHELL The preferred shell to use
27 TIMEFORMAT The format for the time command.
28 UID The ID of the current user

사전 정의된 BASH 변수의 방대한 목록이 있습니다. 우리는 가장 자주 사용되는 목록을 작성하려고 노력했습니다.

지금은 여기까지입니다. 또 다른 흥미로운 기사로 찾아오겠습니다. 그때까지 TecMint에 계속 관심을 갖고 연결해 주세요. 아래 댓글 섹션에 귀중한 피드백을 제공하는 것을 잊지 마세요.