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

Bash 변수 자습서 – 6 실제 Bash 전역 및 지역 변수 예제

Bash 변수 자습서 – 6 실제 Bash 전역 및 지역 변수 예제이 기사는 진행 중인 bash 튜토리얼 시리즈의 일부입니다. 다른 프로그래밍 언어와 마찬가지로 Bash도 변수를 제공합니다.

Bash 변수는 프로그램 수명 동안 필요한 정보를 위한 임시 저장소를 제공합니다.

구문:

VARNAME=VALUE

참고: 변수 할당에서 "=" 기호 주위에는 공백이 없어야 합니다. VAR=VALUE를 사용하면 쉘은 "="를 기호로 보고 명령을 변수 할당으로 처리합니다. VAR =VALUE를 사용할 때 쉘은 VAR이 명령의 이름이어야 한다고 가정하고 실행을 시도합니다.

Shell은 변수 유형에 신경 쓰지 않습니다. 변수는 문자열, 정수 또는 실수를 저장할 수 있습니다.

Example.1 간단한 Bash 변수 할당 사용법

다음 스크립트는 LIST라는 변수를 만들고 "/var/opt/bin" 값을 할당합니다. 변수에 액세스하려면 변수 이름에 $를 접두사로 붙이면 해당 변수에 저장된 값이 표시됩니다.

$ cat sample.sh
#!/bin/bash
LIST="/var/opt/bin/"
ls -l $LIST

위의 스크립트를 실행하면 아래와 같이 /var/opt/bin이 긴 형식으로 나열됩니다.

$ ./sample.sh
total 8
drwxrwsr-x 2 bin bin 4096 Jan 29 06:43 softwares
drwxr-sr-x 5 root bin 4096 Sep 2 2009 llist

Bash 변수 범위 – 로컬 및 글로벌

Bash에서는 변수를 선언할 필요가 없습니다. 그러나 지금까지 사용하지 않은 변수에 접근하면 경고나 오류 메시지가 표시되지 않습니다. 대신 빈 값이 표시됩니다.

<센터>

예시 2. bash 변수의 빈 값

$ cat var1.sh
#!/bin/sh
echo "Variable value is: $VAR1"
VAR1="GEEKSTUFF"
echo "Variable value is: $VAR1"

$ ./var1.sh
Variable value is:
Variable value is: GEEKSTUFF

위에 표시된 것처럼 처음에는 변수에 빈 값이 있고 할당 후에 값을 얻을 수 있습니다. export 명령은 대화형 쉘에서 변수를 내보내는 데 사용됩니다. 내보내기는 변수 범위에 대한 영향을 보여줍니다.

예시 3. 내보내기가 없는 Bash 변수

대화형 셸에서 값으로 변수를 할당하고 셸 스크립트에서 동일한 값에 액세스합니다.

$ VAR2=LINUX

$ cat var2.sh
#!/bin/bash
echo "VAR2=$VAR2"
VAR2=UNIX
echo "VAR2=$VAR2"

이제 위의 스크립트를 아래와 같이 실행합니다.

$ ./var2.sh
VAR2=
VAR2=UNIX

여전히 변수 VAR2에 대해 빈 값이 표시됩니다. 쉘은 현재 쉘에서만 LINUX와 함께 변수 VAR2를 저장합니다. var2.sh를 실행하는 동안 쉘을 생성하고 스크립트를 실행합니다. 따라서 변수 VAR2는 생성된 쉘에 값을 갖지 않습니다. 아래와 같이 쉘 스크립트를 포함하여 다른 프로그램에 상속되도록 변수를 내보내야 합니다.

예제 4. Bash 변수 내보내기

$ export VAR2=LINUX

$ cat var2.sh
#!/bin/bash
echo "VAR2=$VAR2"
VAR2=UNIX
echo "VAR2=$VAR2"

이제 위의 스크립트를 실행하십시오.

$ ./var2.sh
VAR2=LINUX
VAR2=UNIX
$
$echo $VAR2
LINUX

이제 쉘 스크립트 var2.sh를 실행한 후 VAR2의 값이 LINUX임을 알 수 있습니다. 현재 셸에서 스크립트를 실행하지 않는 한 변수는 대화형 셸로 다시 전달되지 않기 때문입니다.

Bash 변수 선언

bash에서 선언문을 사용하여 변수에 할당된 값을 제한할 수 있습니다. 변수의 속성을 제한합니다. 선언문의 옵션은 변수의 유형을 결정하는 데 사용됩니다.

구문:

declare option variablename
  • 선언은 키워드입니다
  • 옵션은 다음과 같을 수 있습니다.
    • -r 읽기 전용 변수
    • -i 정수 변수
    • -배열 변수
    • -f 함수
    • -x는 환경을 통해 후속 명령을 선언하고 내보냅니다.

예시 5. 선언을 이용한 Bash 변수 선언

$ cat declar.sh
#!/bin/bash
declare -i intvar
intvar=123 # Assigning integer value.
echo $intvar
intvar=12.3 #Trying to store string type value to an integer variable
echo $intvar

declare -r rovar=281
rovar=212 # Trying to change the readonly variable.

아래 실행에서 변수에 유효하지 않은 데이터를 할당할 때 오류 메시지를 확인할 수 있습니다.

$ ./declar.sh
123
t.sh: line 6: 12.3: syntax error: invalid arithmetic operator (error token is ".3")
123
t.sh: line 11: rovar: readonly variable

전역 Bash 변수

전역 변수는 환경 변수라고도 하며 모든 셸에서 사용할 수 있습니다. printenv 명령은 모든 환경 변수를 표시하는 데 사용됩니다.

$ printenv
SHELL=/bin/bash
HISTSIZE=1000
SSH_TTY=/dev/pts/1
HOME=/root
LOGNAME=root
CVS_RSH=ssh

로컬 Bash 변수

지역 변수는 코드 블록 내에서만 볼 수 있습니다. local 은 지역 변수를 선언하는 데 사용되는 키워드입니다. 함수에서 로컬 변수는 해당 함수 블록 내에서만 의미를 갖습니다.

예제 6. 전역 및 로컬 Bash 변수

$ cat localvar.sh
#!/bin/bash
pprint()
{
 local lvar="Local content"
 echo -e "Local variable value with in the function"
 echo $lvar
 gvar="Global content changed"
 echo -e "Global variable value with in the function"
 echo $gvar
}

gvar="Global content"
echo -e "Global variable value before calling function"
echo $gvar
echo -e "Local variable value before calling function"
echo $lvar
pprint
echo -e "Global variable value after calling function"
echo $gvar
echo -e "Local variable value after calling function"
echo $lvar

위의 스크립트를 실행합니다.

$ sh t.sh
Global variable value before calling function
Global content
Local variable value before calling function

Local variable value with in the function
Local content
Global variable value with in the function
Global content changed
Global variable value after calling function
Global content changed
Local variable value after calling function

위의 출력에서 ​​지역 변수는 함수 호출 전후에 빈 값만 가질 것입니다. 그 범위는 함수 내에서만 가능합니다. 전역 변수는 함수 실행 후에도 업데이트된 값을 유지하는 반면 함수에서 사라졌습니다.