Bash 변수 범위
이 기사에서는 Linux의 bash 변수 범위
에 대해 알아봅니다. 또한 Linux 운영 체제의 bash 스크립트에서 변수를 선언하는 방법도 배웁니다.
또한 다양한 유형의 변수와 Linux OS를 사용하여 bash 스크립트에서 로컬 및 전역 변수에 액세스하는 방법을 살펴봅니다. Linux에서 사용되는 변수의 개념부터 시작하겠습니다.
Linux의 Bash 변수 범위
변수는 모든 프로그래밍 언어에서 처리할 다양한 데이터 유형을 위한 임시 저장 공간입니다. 변수는 종종 데이터 유형과 해당 값이라는 두 개의 개별 엔티티와 연관됩니다.
데이터 유형은 변수에 보관된 데이터를 설명하는 반면 값은 데이터 자체를 나타냅니다. Bash 프로그래밍에서 변수를 선언할 때 명시적으로 데이터 유형을 지정할 필요가 없습니다.
이는 프로그래밍 언어가 데이터 유형 자체를 감지하기 때문입니다. 예를 들어 bash에서 변수에 숫자를 할당하면 즉시 정수로 처리됩니다.
Bash에서 변수를 선언하는 방법
bash에서는 등호 '='
를 사용하여 원하는 이름으로 변수를 선언할 수 있으며 값으로 할당할 수 있습니다. 다음은 bash에서 변수를 선언하기 위해 따를 수 있는 몇 가지 규칙입니다.
- 대문자와 소문자, 숫자, 밑줄 및 소수점은 모두 변수 이름에 사용할 수 있는 문자입니다.
- Bash 스크립트에서 변수 이름은 대문자 사용을 권장합니다.
- 등호
'='
주위에 공백을 두지 마십시오. - 사전 정의된 모든 키워드(예:
if
,else
,local
등)는 제한됩니다.
다음은 bash에서 String 변수를 선언한 예입니다. 터미널을 열고 변수를 선언합니다. 변수를 선언하는 동안 등호('='
) 주위에 공백을 두는 것이 허용되지 않는다는 것을 잊지 마십시오.
$ _name=abid
echo
를 사용하여 변수의 출력을 얻습니다.
$ echo $_name
출력:
abid
bash에서 Integer 변수 선언.
$ _age=24
마찬가지로 echo
를 사용하여 이 변수의 출력도 얻을 수 있습니다.
$ echo $_age
출력:
24
Bash의 변수 범위
Bash 변수의 범위는 다른 프로그래밍 언어와 마찬가지로 로컬 또는 전역일 수 있습니다. Bash 스크립트에서 선언된 위치는 중요하지 않습니다.
bash의 모든 변수는 기본적으로 전역 범위를 갖습니다. 이는 변수가 스크립트 중간에 정의되어 있어도 bash 스크립트의 모든 함수 내에서 사용할 수 있음을 나타냅니다.
달리 말하면, bash에서는 범위를 전역으로 만들기 위해 항상 스크립트 시작 부분에 변수를 선언할 필요는 없다고 주장할 수 있습니다.
또한 해당 변수의 범위를 특정 함수로 제한하려면 bash에서 변수를 선언할 때 local
키워드를 명시적으로 사용해야 합니다. .
이렇게 하면 변수의 범위가 정의된 함수로 제한됩니다.
변수의 종류
우리가 알아야 할 주로 세 가지 유형의 변수 범위가 있습니다.
- 지역 변수
- 글로벌 변수
- 환경변수
Bash에서 로컬 변수에 액세스하기
로컬 변수를 선언한 코드 블록 내에서만 로컬 변수에 액세스할 수 있습니다. 예를 들어 Bash 스크립트 내에서 변수를 선언하면 코드 외부에서 액세스할 수 없습니다.
예제 코드:
#!/bin/bash
echo "Learning the scope of local and global variables."
function_localVar(){
echo "Within the function function_localVar"
echo "Assign a variable with local keyword to a variable name: varLocal"
local varLocal=27
echo "Assign a variable without local keyword to a variable name: varLocal_wo"
varLocal_wo=9
echo "Printing within the function."
echo "Value assigned to one with local keyword varLocal = $varLocal and without local keyword varLocal_wo = $varLocal_wo"
echo "Exiting function_localVar"
}
glob_var=91
echo "Start of the code!"
echo "Global Variable = $glob_var"
echo "Local variable before calling function to one with local keyword varLocal = ** $varLocal ** and without local keyword varLocal_wo = ** $varLocal_wo **"
echo "Calling the function."
function_localVar
echo "Printing outside the function."
echo "Value assigned to one with local keyword varLocal = $varLocal and without local keyword varLocal_wo = $varLocal_wo"
출력:
Learning the scope of local and global variables.
Start of the code!
Global Variable = 91
Local variable before calling function to one with local keyword varLocal = ** ** and without local keyword varLocal_wo = ** **
Calling the function.
Within the function function_localVar
Assign a variable with local keyword to a variable name: varLocal
Assign a variable without local keyword to a variable name: varLocal_wo
Printing within the function.
Value assigned to one with local keyword varLocal = 27 and without local keyword varLocal_wo = 9
Exiting function_localVar
Printing outside the function.
Value assigned to one with local keyword varLocal = and without local keyword varLocal_wo = 9
아마도 local 키워드가 범위 local
을 설정하고 변수가 local
로 정의된 함수 외부에서 읽혀지는 경우에도 빈 값을 반환한다는 것이 다음 코드에서 분명합니다.
Bash에서 전역 범위 변수에 액세스
bash 스크립트 전체에서 전역 변수에 액세스할 수 있습니다. 아래의 이 예는 전역 변수 범위가 bash에서 어떻게 작동/작동하는지 이해하는 데 도움이 됩니다.
예제 코드:
var1='Abid'
var2='Ali'
my_function () {
local var1='Micheal'
var2='Den'
echo "Inside function: var1: $var1, var2: $var2"
}
echo "Before executing the function: var1: $var1, var2: $var2"
my_function
echo "After executing the function: var1: $var1, var2: $var2"
출력:
Before executing the function: var1: Abid, var2: Ali
Inside function: var1: Micheal, var2: Den
After executing the function: var1: Abid, var2: Den
위의 코드 조각 결과는 다음과 같은 결론으로 이어집니다.
- 기존 글로벌 변수와 동일한 이름의 로컬 변수가 함수 범위 내에서 설정될 때마다 로컬 변수가 우선합니다.
- 전역 변수에 대한 변경은 실제로 함수 내에서 이루어질 수 있습니다.
환경 변수
환경 변수(ENVs
)는 기본적으로 환경 작동 방식을 지정합니다. bash에서 환경 변수는 전역 또는 로컬 범위를 가질 수 있습니다.
우리는 해당 터미널에서 생성된 글로벌 범위의 ENV
에 터미널 환경 내 어디에서나 액세스할 수 있습니다. 해당 터미널에 의해 제한되는 컨텍스트에서 작동하기 때문에 모든 스크립트, 프로그램 또는 프로세스에서 사용할 수 있습니다.
터미널에서 실행 중인 모든 애플리케이션 또는 프로세스는 지정된 로컬 범위 ENV
에 액세스할 수 없습니다. 변수를 정의한 터미널만 변수에 액세스할 수 있습니다.
환경 변수 설정
글로벌 범위로서의 환경 변수:
$ export COUNTRY=USA
or
$ set NAME=Abid
로컬 범위로서의 환경 변수:
$ NAME=Abid
이제 환경 변수를 표시하는 방법이 중요합니다. echo
를 사용하여 일반 변수처럼 환경 변수를 표시할 수 있습니다.
$ echo $COUNTRY
출력:
USA
이 명령의 출력은 이 변수 COUNTRY
에 할당한 USA
값이 됩니다.
모든 환경 변수 표시
세 가지 명령을 사용하여 모든 ENV
를 표시할 수 있습니다.
-
// for displaying all the global Environment Variables only $ printenv
-
// We use this command to display local and global Environment Variables $ set
삼.
bash // for displaying all global Environment Variables $ env
My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.
LinkedIn