스크립트에서의 사용자 입력
Coddy Terminal 여정의 기초 섹션에 포함된 레슨 — 82개 중 69번째.
변수는 유용하지만, 때로는 스크립트가 실행되는 동안 사용자에게 정보를 요청하고 싶을 때가 있습니다. read 명령어는 스크립트를 일시 중지하고 사용자가 무언가를 입력할 때까지 기다린 다음, 그 입력을 변수에 저장합니다.
작동 방식은 다음과 같습니다:
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"이 스크립트가 실행되면 질문을 출력하고 사용자가 이름을 입력하고 Enter 키를 누를 때까지 기다린 다음 인사를 건넵니다. read 명령은 사용자가 입력하는 모든 내용을 가져와 name 변수에 저장합니다.
-p 플래그를 사용하면 프롬프트 메시지와 입력을 같은 줄에 결합하여 프롬프트를 한결 깔끔하게 만들 수 있습니다:
#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"이것은 Enter your name: 을 출력하고 동일한 줄에서 입력을 기다리므로 더 깔끔해 보입니다. -p 플래그는 프롬프트 텍스트를 인수로 받고, 그 뒤에 입력을 저장할 변수 이름이 옵니다.
사용자 입력을 활용하면 스크립트를 대화형으로 만들고 유연하게 확장할 수 있습니다. 값을 하드코딩하는 대신, 사용자가 실행할 때마다 입력하는 내용에 따라 다르게 동작하는 단 하나의 스크립트를 작성할 수 있습니다.
챌린지
쉬움사용자에게 좋아하는 색상을 묻고 입력받은 값을 사용하여 메시지를 출력하는 greeter.sh라는 셸 스크립트를 작성하세요.
스크립트는 다음 조건을 만족해야 합니다:
- 쉬뱅(shebang) 라인(
#!/bin/bash)으로 시작합니다. read와-p플래그를 사용하여 프롬프트 메시지를 출력합니다:What is your favorite color?- 입력받은 값을
color라는 변수에 저장합니다. echo를 사용하여 다음과 같이 출력합니다:Nice! [color] is a great color!(여기서 [color]는 사용자가 입력한 값입니다)
스크립트에 실행 권한을 부여한 후 blue를 입력값으로 지정하여 실행하세요. 이 터미널은 대화형이 아니므로 사용자의 입력을 기다릴 수 없습니다. 따라서 파이프를 통해 입력값을 스크립트로 전달해야 합니다:
echo "blue" | ./greeter.sh출력 결과는 다음과 같아야 합니다:
Nice! blue is a great color!참고:
What is your favorite color?프롬프트는 여기에 표시되지 않습니다.read -p는 입력이 키보드로부터 들어올 때만 프롬프트를 출력하며, 여기서는 파이프를 통해 입력이 전달되기 때문입니다.
힌트: 리다이렉션과 함께
echo를 사용하여 스크립트를 한 줄씩 작성하세요.read -p "What is your favorite color? " color를 사용하여 프롬프트를 띄우고 입력을 받은 다음,echo "Nice! $color is a great color!"를 사용하여 결과를 출력하세요.
직접 해보기
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.