스크립트에서의 사용자 입력
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)로 시작하기 -p플래그와 함께read를 사용하여 다음을 프롬프트로 표시하기: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 'echo "Hello $name"' >> script.sh. 작은따옴표는 파일을 작성하는 동안 셸이$name을 대체하지 못하게 하므로, 스크립트에는 변수가 그대로 유지되고 실행될 때 확장됩니다. 큰따옴표를 사용하면 값이 즉시 대체됩니다.
힌트: 리디렉션과 함께
echo를 사용하여 스크립트를 한 줄씩 작성하세요.read -p "What is your favorite color? " color를 사용하여 입력을 요청하고 저장한 다음,echo "Nice! $color is a great color!"를 사용하여 결과를 표시하세요.
직접 해보기
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: Terminal 플레이그라운드