사용자의 서버 목록을 읽으시겠습니까?

사용자의 서버 목록을 읽으시겠습니까?

사용자가 입력한 서버 목록을 읽고 변수에 저장하려면 어떻게 해야 합니까?

예:

Please enter list of server:
(user will enter following:)
abc
def
ghi
END

$echo $variable

abc
def
ghi

쉘 스크립트에서 실행하고 싶습니다. 쉘 스크립트에서 다음을 사용하는 경우:

read -d '' x <<-EOF

오류가 발생합니다.

line 2: warning: here-document at line 1 delimited by end-of-file (wanted `EOF')

이것을 쉘 스크립트에 통합하는 방법을 제안해주세요.

답변1

넌 할 수있어

servers=()                     # declare an empty array
# allow empty input or the string "END" to terminate the loop
while IFS= read -r server && [[ -n $server && $server != "END" ]]; do
    servers+=( "$server" )     # append to the array
done
declare -p servers             # display the array

또한 이를 통해 사용자는 항목을 수동으로 입력하거나 파일에서 리디렉션할 수 있습니다.

답변2

스크립트나 프로그램에서 사용자가 항목 목록을 대화형으로 제공하도록 요구하는 경우는 매우 드뭅니다(실제로 실행 취소할 방법이 없는 가난한 사람의 텍스트 편집기와 비슷함).

스크립트나 프로그램이 준비된 파일에서 항목 목록을 읽는 것이 더 일반적입니다.

#!/bin/sh

while IFS= read -r item; do
    printf 'The item given by the user is %s\n' "$item"
done

이 스크립트는 다음과 같이 사용됩니다.

$ ./script.sh <myfile

내부에는 myfile스크립트가 특정 작업을 읽고 수행할 줄이 포함된 텍스트 파일이 있습니다.

이 스크립트를 실행아니요파일 입력이 가능합니다. 그런 다음 입력을 수동으로 입력해야 합니다. 이 수동 입력의 종료를 알리려면 을 누르십시오 Ctrl+D.

관련 정보