dividindo a entrada do usuário com o comando read

0
echo -n "# WHICH DAYS? #"
read day

suponha que a entrada do usuário seja: 100 101 com um espaço entre os números. Por exemplo, eu preciso extrair o valor da primeira e da segunda coluna do dia separadamente, qual comando dá esse valor? Eu tentei comandos abaixo, mas eles dão matriz inteira;

first_column_of_day=${day[${1}]}
echo "$first_column_of_day"

second_column_of_day=${day[${2}]}
echo "$second_column_of_day"
    
por deepblue_86 27.12.2015 / 20:41

1 resposta

4

Primeiro, você deve informar read para usar uma matriz. De help read :

-a array    assign the words read to sequential indices of the array
            variable ARRAY, starting at zero

Então, faça:

read -a day

Em seguida, use apenas 1 e 2 , sem o ${...} . Nesse caso, como as anotações do texto de ajuda, inicie em 0 :

first_column_of_day="${day[0]}"
second_column_of_day="${day[1]}"

${1} é o primeiro argumento do script, que pode ou não ser 1 .

Observe também que bash ' read pode imprimir uma solicitação:

-p prompt   output the string PROMPT without a trailing newline before
            attempting to read

Então:

read -p "# WHICH DAYS? #" -a day
    
por muru 27.12.2015 / 20:52