Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

Bash/Shell 스크립트에서 사용자 입력을 요청하는 방법

이 짧은 자습서는 Bash/Shell 스크립트에서 입력한 입력을 사용자에게 묻는 방법을 알려줍니다. 배우기 쉽고 하기 쉬우니 계속 읽어보세요!

읽기 명령

셸 스크립트에서 사용자 입력을 읽으려면 적절한 이름의 read를 사용하세요. 명령. 다음과 같은 구문이 있습니다.

read OPTIONS VARIABLES

참고:

  • 읽기 명령은 표준 입력에서 한 줄을 읽습니다. 해당 입력을 필드로 분할
    • 일반적으로 표준 입력 는 키보드의 입력이 있는 터미널이지만 입력을 파이프 또는 리디렉션할 수도 있습니다. 읽기 명령
    • 사용자의 관점에서 메시지가 표시되며 ENTER 키를 눌러 입력해야 합니다.
  • 옵션 읽기 동작을 수정하는 아래 표의 옵션 플래그 목록이어야 합니다. 명령
  • 변수 공백
      로 구분하여 스크립트에 전달할 값 목록입니다.
    • -p인 경우 옵션을 사용하는 경우 이를 일치하는 프롬프트 목록과 연결하여 사용자에게 무엇을 입력해야 하는지 알려줄 수 있습니다.
    • 여러 변수로 공백으로 구분하여 제공할 수 있으며 공백이나 기타 특수 문자를 포함하여 입력하려는 모든 값은 따옴표로 묶어야 합니다.
<일>
읽기 일반적으로 사용되는 옵션
-배열 읽은 단어를 0에서 시작하는 배열 변수 ARRAY의 순차적 인덱스에 할당
-p 프롬프트 읽기를 시도하기 전에 후행 개행 없이 문자열 PROMPT를 출력합니다.
-r 백슬래시가 문자를 이스케이프 처리하는 것을 허용하지 않음
-s 터미널에서 오는 입력을 에코하지 않음
-t 시간 ​​초과 TIMEOUT초 이내에 전체 입력 라인을 읽지 않으면 시간 초과 및 반환 실패

평소와 같이 읽기에 대한 사용자 설명서를 얻을 수 있습니다. 다음을 실행하여 사용 가능한 옵션의 전체 목록을 포함한 명령

man read

읽기 명령을 사용하여 입력 요청

다음은 읽기를 사용하는 몇 가지 예입니다. Bash/Shell 스크립트에서 사용자 입력을 수락하는 명령입니다.

하지만 먼저...

Linux Shell Scripts의 '#!'는 무엇입니까?

입력 받기

이것은 명령의 가장 간단한 사용법입니다. 단순히 입력에서 단일 값을 읽는 것입니다.

#!/bin/bash

read word
echo You just typed $word

위에서 입력은 $word라는 변수로 읽힙니다. , 그런 다음 에코를 사용하여 표시됩니다. 명령. 다시 말하지만,  메시지가 표시되지 않습니다. – 화면이 멈추고 사용자가 무언가를 입력할 때까지 기다린 다음 ENTER 키를 누르면 스크립트가 주어진 입력으로 다시 시작됩니다.

여러 입력 값을 얻으려면 공백으로 구분하여 명령에 더 많은 변수를 추가하십시오.

#!/bin/bash

read word1 word2
echo You just typed $word1 followed by $word2

메시지로 입력 요청

입력을 기다리기 위해 화면을 일시 중지하는 것은 실제로 사용자 친화적이지 않습니다. 일반적으로 사용자에게 입력해야 하는 내용(예:사용자 이름 또는 암호)을 알려야 합니다. 이 다음 예는 바로 그 역할을 합니다.

#!/bin/bash

read -p 'Username: ' username
read -sp 'Password: ' password
echo Your username is $username, we will not display your password

위의 -p 옵션은 프롬프트를 표시하는 데 사용됩니다. 사용자에게 각 변수의 값에 대해 무엇을 입력해야 하는지 알려주는 메시지가 표시됩니다.

-s도 볼 수 있습니다. 암호 변수에 사용되는 옵션으로, 입력된 입력이 표시되지 않도록 묵음 처리합니다.

메시지로 다중 입력 요청

프롬프트를 표시한 다음 여러 값을 읽을 수 있습니다.

#!/bin/bash

read -p 'Please type your first and last name: ' first last
echo Your name is $first $last

예/아니요 확인

다음은 while 루프를 사용하여 사용자에게 간단한 예/아니요 질문을 하는 방법입니다. 및 케이스 설명 . y로 시작하는 모든 문자열 또는 Y 로 해석됩니다. *, n으로 시작하는 모든 문자열 또는 N 아니요로 해석됩니다. :

#!/bin/bash
while true; do
    read -p "Do you wish to perform this action?" yesno
    case $yesno in
        [Yy]* ) 
            echo "You answered yes"
        ;;
        [Nn]* ) 
            echo "You answered no, exiting"
            exit
        ;;
        * ) echo "Answer either yes or no!";;
    esac
done

스크립트는 아니요가 될 때까지 실행됩니다. 수신되며 사용자에게 작업을 수행하라는 메시지를 표시하도록 쉽게 수정할 수 있습니다.