본문 바로가기
기타/셸스크립트

[리눅스] 셸스크립트기초 - 지역변수와 전역변수

by 일코 2024. 2. 10.

자바스크립트 같기도 하고, C 같기도 하면서, 파이썬 같기도 한...
(사실 sh가 이들을 닮은 게 아니고, 얘들이 sh를 닮은 거겠지.)
셸 스크립트를 공부하는 중에,

전역변수와 로컬변수라는 개념이 내심 반가웠다.

파이썬에서는 함수 안에서 변수를 정의하면 그냥 자동으로 지역변수가 되는데,

sh에서는 local 이라는 키워드를 넣어줘야 한다.

#!/bin/bash

language="Korean"

function learn() {
    local learn_language="English"  # 등호 좌우에 빈칸이 있으면 오류남ㅜ. 지역변수 정의
    echo "I am learning $learn_language"  # echo는 print와 같음.
}

function print_() {
    echo "I can speak $1"
}

learn  # 지역변수를 출력하는 함수 실행
print_ $language  # 전역변수를 파라미터로 넣고 print_ 실행
print_ $learn_language  # learn의 지역변수를 print_에 넣고 실행 -> 결과없음

결과는 아래와 같다.

마지막 라인의 speak 뒤에 $learn_language가 비어있다.
다른 함수의 지역변수는 그 함수 스코프 안에만 존재하는 것.


이 포스팅은 장현정님의 저서,
"처음 배우는 셸스크립트(한빛미디어)" 를 보고
리눅스 기초부터 차근차근 공부하는 과정을
기록한 내용입니다.

책의 난이도 스펙트럼이 굉장히 넓긴 하지만(후반부에는 프라이빗 클라우드 구축?)
초반에는 입문자를 위한 간단한 변수선언이나 조건문, 반복문부터 시작해서
천천히 난이도를 높여 가는 스타일이네요. 이런 진행 너무 마음에 듭니다.
참고로, 소개하는 명령어는 그리 많지 않지만, 옵션이나 파라미터를 굉장히 상세하게 다뤄줍니다.
man이나 --help의 영어설명이 아직도 너무 생소한 저로서는
이런 자세한 설명이 아주 감사할 뿐입니다.

grep, find, awk, date 같은 기본 명령어만 빠삭하게 알아도
리눅스를 훨씬 강력하게 다룰 수 있겠다는 확신이 드네요.

댓글