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:
domain1.com
domain2.com
domain3.com
domain4.com
Is it possible?.
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.
Example:
$ bash script
Enter the domain names: domain1.com
domain2.com
domain3.com
domain4.com
declare -a arr='([0]="domain1.com" [1]="domain2.com" [2]="domain3.com" [3]="domain4.com")'
Use loop
:
#!/bin/bash
arrDomains=()
echo "Enter the domain names :"
while read domain
do
arrDomains+=($domain)
# do processing with each domain
done
echo "Domain List : ${arrDomains[@]}"
Once you have entered all domain names press ctrl + D
to end of input.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With