Lista de leitura de servidores para o usuário?

1

Como posso ler a lista de servidores inseridos pelo usuário & salvá-lo em variável?

Exemplo:

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

$echo $variable

abc
def
ghi

Eu quero que ele seja executado em shell script. Se eu usar o seguinte no script de shell:

read -d '' x <<-EOF

Está me dando um erro:

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

Por favor, sugira como posso incorporá-lo no script de shell?

    
por Sumeet Panse 26.07.2018 / 18:33

2 respostas

0

Você pode fazer

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

Isso também permite que o usuário digite entradas manualmente ou redirecione de um arquivo.

    
por 27.07.2018 / 17:37
0

É muito raro que um script ou programa peça a um usuário para fornecer interativamente uma lista de itens (efetivamente atuando como um editor de texto de homem pobre sem desfazer).

É muito mais comum que scripts ou programas leiam listas de itens de um arquivo preparado:

#!/bin/sh

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

Este script seria então usado como

$ ./script.sh <myfile

onde myfile seria um arquivo de texto com linhas que o script iria ler e fazer algo com.

Rodar este script sem um arquivo de entrada seria possível. A entrada teria que ser digitada manualmente. Para sinalizar o final desta entrada manual, pressione Ctrl + D .

    
por 26.07.2018 / 18:56