我想问一下
我有一个问题,如何在 bash 中获取输入来执行换行符?
read -p "List Name: " list
cat <<EOF >names.txt
List Names:
$list
EOF
我无法添加新行或使用命令 \n ,如何添加新行命令?
我想要像这样的结果输出 names.txt
List Name :
Robert
James
Samuel
答案1
如果您想要每行一个项目的列表,则可以使用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[@]}"
现在您可以将其用作list
普通数组,例如${list[1]}
。
答案2
默认情况下,bash 使用空格字符作为分隔符来分隔单词。此 shell 脚本使用空格字符作为分隔符来分隔用户输入的三个名称。将以下 shell 脚本粘贴到名为 input-names.sh 的文本文件中,右键单击 input-names.sh,选择特性->权限选项卡,并在左侧打勾 允许将文件作为程序执行。
#!/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"
执行上述脚本后将出现以下输出。
:~$ ./input-names.sh
Type three names separated by space characters.
Robert James Samuel
List name :
Robert
James
Samuel