Problema 1:
No seu exemplo, read
não recebe sua entrada de um argumento de linha de comando, mas de stdin. Como tal, a entrada que recebe não passa pelo analisador de cadeia bash
. Em vez disso, ele é tratado como uma sequência literal, delimitada por espaços. Assim, com sua entrada, seus valores de matriz se tornam:
[0]->("apple
[1]->fruit"
[2]->"orange"
[3]->"grapes"
Para fazer o que você quer, você precisa escapar de todos os espaços que você tem, para evitar que o delimitador entre.. Você deve digitar a seguinte entrada após invocar read
:
apple\ fruit oranges grapes
Problema 2: Para que read
armazene a entrada que recebe como uma matriz, você deve ter uma opção -a
seguida do nome da matriz. Então você precisa:
read -a myarray -p "Enter your items"