如何在 bash 中创建带换行符的输入读取?

如何在 bash 中创建带换行符的输入读取?

我想问一下

我有一个问题,如何在 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 

相关内容