이 짧은 자습서는 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
스크립트는 아니요가 될 때까지 실행됩니다. 수신되며 사용자에게 작업을 수행하라는 메시지를 표시하도록 쉽게 수정할 수 있습니다.