how to create input read with newline in bash?
Sophia Terry
I want to ask
I have a problem, how do I get input in bash to do newlines?
read -p "List Name: " list
cat <<EOF >names.txt
List Names:
$list
EOFi can not do a new line or use the command \n , how to add a new line command ?
I want result output names.txt like this
List Name : Robert James Samuel 1 2 Answers
If you want a list with one item per line, you can use readarray:
# Read list
echo "Enter one name per line, finish with Ctrl-D:"
readarray -t list
# Use list as normal array
echo "Name List:"
printf '%s\n' "${list[@]}"Now you can use list as normal array, e.g. ${list[1]}.
By default bash uses a space character as a delimiter to separate words. This shell script uses a space character as a delimiter to separate three names that are input by the user. Paste the following shell script into a text file named input-names.sh, right click input-names.sh, select Properties -> Permissions tab and put a checkmark to the left of Allow executing file as a program.
#!/bin/bash
# Read multiple inputs
echo "Type three names separated by space characters."
read name1 name2 name3
echo "List name :"
echo " $name1"
echo " $name2"
echo " $name3"The following output will appear after executing the above script.
:~$ ./input-names.sh
Type three names separated by space characters.
Robert James Samuel
List name : Robert James Samuel