사용자가 입력한 서버 목록을 읽고 변수에 저장하려면 어떻게 해야 합니까?
예:
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.