john wilson john wilson - 1 year ago 63
Linux Question

Accept multiple lines of input in a bash script

I am in the middle of writing a bash script. The pending point I am stuck with is how to accept multiple inputs from the user at a time.

To be specific, a user must be able to input multiple domain names when the script asks to enter the input.

Example, script running portion:

Enter the domain names :

and user must be able to enter the domain names line by line either by entering each of them manually or he/she just have to copy domain names list from somewhere and able to paste it in the script input, like as follows:

Is it possible?.

Answer Source

Yes, you can: use readarray:

printf "Enter the domain names: "
readarray -t arr
# Do something...
declare -p arr

The last line above just documents what bash now sees as the array.

The user can type or copy-and-paste the array names. When the user is done, he types Ctrl-D at the beginning of a line.


$ bash script
Enter the domain names:
declare -a arr='([0]="" [1]="" [2]="" [3]="")'
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download