Java 9 JShell의 다양한 /vars 명령어 완벽 정리
JShell은 Java 9에서 새롭게 도입된 대화형(Interactive) 명령줄 도구입니다. 입력을 받아 즉시 평가하고 그 결과를 사용자에게 출력하는 방식으로 동작하기 때문에 REPL(Read-Evaluate-Print-Loop) 도구라고도 불립니다.
JShell에서는 내부 명령어인 "/vars"를 사용하여 현재까지 생성된 모든 변수를 한눈에 확인할 수 있습니다. 상황에 따라 활용할 수 있는 다양한 "/vars" 명령어 옵션은 아래와 같습니다.
/vars
/vars [ID]
/vars [변수명]
/vars -start
/vars -all
각 명령어 옵션의 역할
- /vars: 현재 세션에서 활성화된 모든 변수의 목록을 표시합니다.
- /vars [ID]: 입력한 ID에 해당하는 변수와 그 값을 표시합니다. 여기서 ID란 JShell이 표현식에 자동으로 할당하는 변수 이름($1, $2…)을 의미합니다.
- /vars [변수명]: 지정한 [변수명]에 해당하는 변수와 그 값을 표시합니다.
- /vars -start: JShell 시작 스크립트(startup script)에 포함된 모든 변수를 표시합니다.
- /vars -all: 시작 시점의 활성(active), 비활성(inactive), 로드된(loaded) 변수 전체 목록을 표시합니다.
실습 예제
아래 코드 예제에서는 먼저 간단한 표현식과 변수를 생성한 뒤, 다양한 "/vars" 명령어를 적용한 결과를 확인할 수 있습니다.
C:\Users\User>jshell
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro
jshell> 2 + 4
$1 ==> 6
jshell> /vars
| int $1 = 6
jshell> int x = 20
x ==> 20
jshell> /vars
| int $1 = 6
| int x = 20
jshell> /vars $1
| int $1 = 6
jshell> /vars x
| int x = 20
jshell> /vars -all
| int $1 = 6
| int x = 20
jshell> /drop x
| dropped variable x
jshell> /vars -all
| int $1 = 6
| int x = (not-active)
위 실행 결과를 보면, "/drop" 명령어로 변수 x를 삭제한 후 "/vars -all"을 실행하면 해당 변수가 (not-active) 상태로 표시되는 것을 확인할 수 있습니다. 이처럼 "/vars" 계열 명령어를 활용하면 JShell 세션에서 변수의 생성, 변경, 삭제 이력을 손쉽게 추적할 수 있습니다.