ETC/Auto Hotkey

AutoHotkey, 변수를 마스터하여 스크립팅 능력을 한 단계 높이자!

shimdh 2025. 10. 26. 09:59
728x90

AutoHotkey(AHK)는 윈도우 환경에서 반복적인 작업을 자동화하고 생산성을 극대화하는 데 사용되는 강력한 스크립팅 언어입니다. 효과적인 AHK 스크립트를 작성하기 위해서는 기본적인 문법과 명령어를 이해하는 것이 필수적인데요. 그중에서도 변수는 스크립트 전반에 걸쳐 데이터를 저장하고 조작하는 데 핵심적인 역할을 합니다. 이번 포스팅에서는 AutoHotkey 변수의 모든 것을 파헤쳐 여러분의 스크립팅 능력을 한 단계 끌어올리는 데 도움을 드리고자 합니다.

728x90

변수란 무엇이며 왜 중요할까?

AutoHotkey(AHK)에서 변수는 값이나 데이터를 담는 '그릇' 이라고 생각할 수 있습니다. 이 그릇 안에는 숫자, 텍스트 문자열은 물론, 더 복잡한 데이터 형식까지 포함될 수 있습니다. 변수를 사용하면 코드 내에서 동일한 정보를 반복해서 작성할 필요 없이, 저장된 정보를 쉽게 참조하고 재사용할 수 있습니다. 이는 코드의 가독성을 높이고 유지보수성을 향상시키는 데 결정적인 역할을 합니다.

예를 들어, 사용자의 이름을 스크립트 여러 곳에서 사용해야 한다고 가정해봅시다. 이 이름을 직접 여러 번 타이핑하는 대신, userName이라는 변수에 한 번 저장해두면 필요한 곳마다 userName을 참조하기만 하면 됩니다. 나중에 이름을 변경해야 할 때도 변수에 저장된 값만 바꾸면 되므로 훨씬 효율적이죠.

변수는 단순한 데이터 저장을 넘어, 스크립트의 동적 처리를 가능하게 합니다. 예를 들어, 사용자 입력에 따라 변수를 업데이트하거나, 계산 결과를 저장하여 후속 로직에 활용할 수 있습니다. AHK의 강력함은 이러한 변수 조작을 통해 빛을 발휘하니, 초보자라면 변수부터 제대로 익히는 것이 핵심입니다!

AutoHotkey에서 변수 선언하기

AHK에서 변수를 선언하고 값을 할당하는 방법은 매우 간단합니다. 변수 이름을 쓰고 그 뒤에 등호(=) 또는 콜론 등호(:=)를 붙인 다음 값을 할당하면 됩니다.

myVar := 10  ; 숫자 할당 (정수 10을 myVar에 저장)
myText := "Hello"  ; 텍스트 문자열 할당 ("Hello"라는 문자열을 myText에 저장)

= vs. :=: 어떤 것을 사용해야 할까?

여기서 중요한 점은 AHK에는 값을 할당하는 두 가지 방법이 있다는 것입니다.

  • = (전통적인 할당 연산자): 일반적으로 표현식 할당에 사용됩니다. 이 연산자는 변수 이름 자체를 텍스트로 처리하려는 경우에 유용할 수 있지만, 초보자에게는 혼란을 줄 수 있습니다. 예를 들어, 조건문 안에서 변수 이름을 문자열로 다룰 때 쓰입니다.
  • := (표현식 할당 연산자): 다른 프로그래밍 언어의 일반적인 변수 할당 방식과 유사하게, 명확하게 값을 할당하는 데 선호됩니다. 변수에 직접적인 값이나 표현식의 결과를 할당할 때 사용합니다.

대부분의 경우, 특히 변수에 특정 값을 할당할 때는 := 를 사용하는 것이 더 명확하고 권장되는 방법입니다. AHK v1 문법을 사용 중이라면 :=를 기본으로 하세요 – v2로 업그레이드 시에도 이 패턴이 유지됩니다.

선언된 변수 사용하기

변수를 선언한 후에는 스크립트 어디에서든 필요에 따라 사용할 수 있습니다. 변수의 값을 메시지 박스에 표시하거나, 다른 문자열과 결합하여 새로운 정보를 만들 수 있습니다.

msg := "The value of myVar is: " . myVar  ; 문자열 연결 (텍스트와 변수 값을 결합)
MsgBox % msg  ; 메시지 박스에 msg 변수의 내용 표시

위 코드에서 일어나는 과정을 단계별로 살펴보겠습니다:

  1. "The value of myVar is: "라는 문자열과 myVar의 현재 값이 . (점) 연산자를 통해 연결됩니다. 예를 들어 myVar가 10이라면 "The value of myVar is: 10"이 됩니다.
  2. 결과로 생성된 문자열은 msg라는 다른 변수에 저장됩니다.
  3. 마지막으로, MsgBox 명령어를 사용하여 이 msg 변수의 내용을 사용자에게 메시지 박스로 보여줍니다.

이처럼 변수는 스크립트의 출력입력을 연결하는 다리 역할을 합니다. 문자열 연결은 AHK에서 자주 쓰이는 기능이니, 연습해보세요!

AutoHotkey가 지원하는 변수 유형

AutoHotkey는 스크립트의 유연성을 위해 다양한 유형의 변수를 지원합니다:

  • 숫자형 (Numeric): 숫자를 저장합니다. 정수(Integer)와 부동 소수점(Floating-point) 숫자를 모두 포함할 수 있습니다. 계산에 사용됩니다. 예: pi := 3.14159
  • 문자열형 (String): 텍스트를 저장합니다. 항상 인용 부호로 묶어서 표현합니다. 예: "Hello, World!" (백슬래시 \로 특수 문자 이스케이프).
  • 객체/배열 (Object/Array): 여러 값을 담을 수 있는 더 복잡한 구조입니다. 배열은 인덱스(0부터 시작)를 통해 각 요소에 접근할 수 있으며, 객체는 키-값 쌍으로 데이터를 저장합니다.
arrayExample := [1, 2, 3]  ; 배열 선언 (1, 2, 3을 포함하는 배열 생성)
MsgBox % arrayExample[1]  ; '2'를 표시 (배열은 인덱스 0부터 시작하므로 두 번째 요소가 2)

이 예시에서 arrayExample은 배열의 두 번째 요소인 숫자 2를 참조합니다. 객체 예시로 확장하면:

person := {name: "Alice", age: 30}  ; 객체 선언 (키-값 쌍)
MsgBox % "Name: " . person.name . ", Age: " . person.age  ; "Name: Alice, Age: 30" 출력

이러한 복잡한 유형은 대규모 스크립트에서 데이터를 효율적으로 관리할 때 필수적입니다.

변수 값 수정하기

변수에 저장된 값은 스크립트 실행 중 언제든지 변경할 수 있습니다. 이는 사용자 입력, 조건부 로직 또는 반복 작업에 따라 동적으로 값을 변경해야 할 때 매우 유용합니다.

counter := 5  ; 초기 값 5 설정
counter += 3  ; 3을 더함; 이제 counter는 8이 됨 (기존 값에 3을 더하여 업데이트)
MsgBox % counter  ; '8'을 표시

위 예시에서 counter += 3counter := counter + 3과 동일한 의미로, 기존 counter 값에 3을 더하여 새로운 값을 counter에 재할당합니다. 다른 연산자: -=, *=, /= 등도 지원되어 반복 계산에 편리합니다.

변수의 스코프 (Scope) 이해하기

변수의 '스코프' 를 이해하는 것은 변수를 효율적으로 다루는 데 필수적입니다. 스코프는 변수가 코드의 어느 부분에서 접근 가능한지를 정의합니다.

  • 전역 변수 (Global Variables): 스크립트 내 어디에서든 접근할 수 있는 변수입니다. 한 번 선언하면 스크립트의 모든 함수에서 사용할 수 있어 여러 함수에서 공유해야 하는 데이터를 저장할 때 유용합니다.
  • global myGlobalVar := "I am global!" ; 전역 변수 선언 MyFunction() { MsgBox % myGlobalVar ; 함수 내에서 전역 변수에 접근 가능 } MyFunction()
  • 지역 변수 (Local Variables): 해당 변수가 정의된 함수나 블록 내에서만 접근할 수 있는 변수입니다. 함수 밖에서는 접근할 수 없으며, 이는 변수 이름의 충돌을 피하고 코드의 모듈성을 높이는 데 도움이 됩니다. 함수 내부에서만 사용되는 데이터를 저장할 때 적합합니다.
  • MyFunction() { local myLocalVar := "I am local!" ; 지역 변수 선언 MsgBox % myLocalVar ; 함수 내에서 정상 작동 } MyFunction() ; MsgBox % myLocalVar ; 스코프를 벗어나 에러 발생 (주석 처리)

스코프를 제대로 관리하면 대형 스크립트에서 버그를 최소화할 수 있습니다. AHK v2에서는 스코프 규칙이 더 엄격해졌으니, 버전별 차이를 확인하세요.

실용적인 예시: 모든 것을 통합하기

이제 변수를 효과적으로 사용하는 간단한 AutoHotkey 스크립트를 만들어 보겠습니다. 이 예시는 사용자 입력을 받아 개인화된 메시지를 생성하는 방법을 보여줍니다.

; 간단한 스크립트 예시
name := InputBox("Enter Your Name:", "Name Input")  ; 사용자에게 이름을 입력하도록 요청하고 name 변수에 저장
greetingMessage := "Hello, " . name . "! Welcome."  ; 인사말 메시지 생성 (입력된 이름을 포함하여)
MsgBox % greetingMessage  ; 사용자 정의 인사말 메시지 박스 표시

이 예시에서는:

  1. InputBox 명령어를 통해 사용자로부터 이름을 입력받고, 이 입력값을 name 변수에 저장합니다.
  2. greetingMessage 변수에 "Hello, ", name 변수의 내용, 그리고 "! Welcome." 문자열을 연결하여 개인화된 인사말을 구성합니다.
  3. 마지막으로, MsgBox 명령어를 사용하여 이 greetingMessage의 내용을 사용자에게 메시지 박스로 표시합니다.

이 스크립트를 확장하면, 예를 들어 나이 입력을 추가해 age 변수를 사용한 맞춤형 조언을 출력할 수 있습니다. 실전에서 변수의 힘을 느껴보세요!

마치며

AutoHotkey 스크립팅에서 변수와 그 사용법을 마스터하는 것은 매우 중요합니다. 변수는 데이터를 저장하고 조작하며, 스크립트의 흐름을 제어하는 데 필수적인 요소이기 때문입니다. 변수에 대한 확실한 이해는 나중에 루프(Loop)조건문(If-Else) 같은 고급 구조를 다룰 때 큰 도움이 됩니다. 예를 들어, 루프 안에서 카운터 변수를 업데이트하거나, 조건문에서 변수 값을 비교하여 분기 로직을 구현할 수 있죠.

728x90